Javascript 从嵌套数组中检索数据

Javascript 从嵌套数组中检索数据,javascript,multidimensional-array,ecmascript-6,jagged-arrays,Javascript,Multidimensional Array,Ecmascript 6,Jagged Arrays,如何从嵌套数组中检索ID? 最初我得到这样的json响应,我需要从所有嵌套数组中获取所有ID。 有人能帮我吗? 我应该使用filter或任何find函数吗? 一个例子或解释可能很好 { "id": 271, "name": "anything", "description": null, "entries": [ { "id": "fda2afe0-dfc4-4373-9e50-8b140a46f25e",

如何从嵌套数组中检索ID?
最初我得到这样的json响应,我需要从所有嵌套数组中获取所有ID。 有人能帮我吗? 我应该使用filter或任何find函数吗? 一个例子或解释可能很好

{
    "id": 271,
    "name": "anything",
    "description": null,
    "entries": [
        {
            "id": "fda2afe0-dfc4-4373-9e50-8b140a46f25e",
            "name": "first occurence",
            "runs": [
                {
                    "id": 284,
                    "name": "the element from which I want to get id",
                    "description": null,
                    "created_on": 1530627823,
                    "created_by": 2
                },
                {
                    "id": 285,
                    "name": "element for id 2",
                    "created_by": 2
                },
                {
                    "id": 296,
                    "name": "element for id 3",
                    "created_on": 1530710993,
                    "created_by": 2
                }
            ]
        },
        {
            "id": "a65dd3f0-3fc1-4f93-9123-f5a05ae50703",
            "name": "second occurence",
            "runs": [
                {
                    "id": 272,
                    "name": "element for id 4",
                    "created_by": 2,
                },
                {
                    "id": 273,
                    "created_by": 2,
                },
                {
                    "id": 274,
                    "created_by": 2,
                }
            ]
        }
    ]
}

假设您将该json存储在某个变量中,例如
json

const ids = json.entries.map(entry => entry.runs.map(run => run.id));
应该为您提供一个嵌套的ID数组

[[284285296],[272273274]

如果您希望它位于单个维度列表中,即

[284285296273274]
,

你可以用


假设您正在寻找最深的ID(运行ID),下面是一个如何实现的示例

let response={“id”:271,“name”:“anything”,“description”:null,“entries”:[{“id”:“fda2afe0-dfc4-4373-9e50-8b140a46f25e”,“name”:“first-occurrence”,“runs”:[{“id”:284,“name”:“我想从中获取id的元素”,“description”:null,“createdon”:1530627823,“createdāby”:2},{“id”:285,“name”:“id2的元素”,“createdāby”:2},{“id”:296,“name”:“id为3的元素”,“创建于”:1530710993,“创建于”:2}],{“id”:“a65dd3f0-3fc1-4f93-9123-f5a05ae50703”,“名称”:“第二次出现”,“运行”:[{“id”:272,“名称”:“id为4的元素”,“创建于”:2,},{“id”:273,“创建于”:2,},{“id”:274,“创建于”:2,}]
函数getRunIDs(){
let entries=response['entries']| |[]
让runIDs=[]
entries.forEach(entry=>{
条目['runs'].forEach(run=>{
push(运行['id'])
})
})
返回runid
}

log({runIDs:getRunIDs()})
筛选和查找函数将是多余的,因为您要获取的是所有ID,而不是特定的ID。要解决您的问题,您只需将函数与
映射一起使用即可。在本例中,您的对象将被称为
exampleObj
,您只需执行此操作即可获得所有ID的数组:

exampleObj.entries.map(entryObj => {
  return entryObj.runs.map(runObj=>{return runObj.id});
});

您要提取的
id
s是什么?比如272285-就是这些inside@LittleJohnny“id”:“a65dd3f0-3fc1-4f93-9123-f5a05ae50703”是否将包含在id中?否,仅包含最深阵列中的id
exampleObj.entries.map(entryObj => {
  return entryObj.runs.map(runObj=>{return runObj.id});
});