如何提取嵌套对象数组的值?

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)

Dan*_*ran 6

您可以像下面那样做,而无需使用任何其他库。

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)