use*_*695 3 javascript arrays ecmascript-6
我正在尝试提取如下所示的对象数组的所有链接 ID。这就是我试图获得的方式:
const linkIDs = array
.filter(d => d.links)
.map(d => d.links)
Run Code Online (Sandbox Code Playgroud)
但这给了我一个嵌套数组,这不是我想要的。
[
{
"id: "1",
"links": [
{
"id" : "Dn59y87PGhkJXpaiZ",
"type" : "article"
},
{
"id" : "PGhkJXDn59y87paiZ",
"type" : "article"
}
]
},
{
"id: "2",
"links": [
{
"id" : "GhkJXpaiZDn59y87P",
"type" : "article"
}
]
},
{
"id": "3"
}
]
Run Code Online (Sandbox Code Playgroud)
所以在这个例子中我需要结果
[ "Dn59y87PGhkJXpaiZ", "PGhkJXDn59y87paiZ", "GhkJXpaiZDn59y87P" ]
Run Code Online (Sandbox Code Playgroud)
您可以像下面那样做,而无需使用任何其他库。
var data = [
{
"id": "1",
"links": [
{
"id" : "Dn59y87PGhkJXpaiZ",
"type" : "article"
},
{
"id" : "PGhkJXDn59y87paiZ",
"type" : "article"
}
]
},
{
"id": "2",
"links": [
{
"id" : "GhkJXpaiZDn59y87P",
"type" : "article"
}
]
},
{
"id": "3"
}
];
var result = data.filter(e => e.links)
.map(e => e.links.map(link => link.id))
.reduce((a, b) => a.concat(b), []);
console.log(result);Run Code Online (Sandbox Code Playgroud)