Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从多级嵌套数组JavaScript获取所有键值_Javascript_Arrays_For Loop_Multidimensional Array - Fatal编程技术网

从多级嵌套数组JavaScript获取所有键值

从多级嵌套数组JavaScript获取所有键值,javascript,arrays,for-loop,multidimensional-array,Javascript,Arrays,For Loop,Multidimensional Array,我有一个这样的物体: var数据=[ {“id”:“36e1e015d703120058c92cf65e6103eb”,“标题”:“Alex McGibbon”}, {“id”:“60beb5e7d7600200e5982cf65e6103ad”,“title”:“Alex Linde”}, {“subs”:[{“id”:“62826BF0371000044E0BFC8BCBE5DF1”,“title”:“Abel Tuter”}],“id”:“63e8479fdb161300bde15901

我有一个这样的物体:

var数据=[
{“id”:“36e1e015d703120058c92cf65e6103eb”,“标题”:“Alex McGibbon”},
{“id”:“60beb5e7d7600200e5982cf65e6103ad”,“title”:“Alex Linde”},
{“subs”:[{“id”:“62826BF0371000044E0BFC8BCBE5DF1”,“title”:“Abel Tuter”}],“id”:“63e8479fdb161300bde15901cf96191c”,“title”:“Abdul Waheed”},
{“subs”:[{“subs”:[{“id”:“12826bf03710200044e0bfc8bcbe5db1”,“title”:“Alfonso Griglen”},{“subs”:“06826BF0371000044E0BFC8BCBE5D8A”,“title”:“Allyson Gillispie”},{“id”:“b282abf03710200044e0bfc8bcbe5d28”,“title”:“Allan Schwantd”},“id”:“228BF03200044E0BFC8BCBE5DEC”,“title”:“Alejandratt”;“BFE508BCB7A”:“Adela Cervantsz”},{“id”:“4847c4d4d773020058c92cf65e61038e”,“头衔”:“Alisa Chinoy”},{“id”:“71826BF0371000044E0BFC8BCBE5D3B”,“头衔”:“Ailen Mottern”},{“id”:“a8f98bb0eb32010045e1a5115206fe3a”,“头衔”:“亚伯拉罕·林肯”},“id”:“7c2e6109dbd65300bde15901cf9619b5”,“头衔”:“Raju Koyagura”
];

console.log(data)
您可以使用JSON.stringify轻松地在树上行走:

const ids = [];
JSON.stringify(data, (key, value) => {
  if (key === 'id') ids.push(value);
  return value;
});

创建递归函数并通过
id
检查该对象是否有键。按下
id
的值。如果键是另一个数组,则使用新值调用相同的函数

var数据=[{
“id”:“36e1e015d703120058c92cf65e6103eb”,
“标题”:“Alex McGibbon”
},
{
“id”:“60beb5e7d7600200e5982cf65e6103ad”,
“标题”:“亚历克斯·林德”
},
{
“潜艇”:[{
“id”:“62826BF0371000044E0BFC8BCBE5DF1”,
“标题”:“阿贝尔导师”
}],
“id”:“63e8479fdb161300bde15901cf96191c”,
“头衔”:“阿卜杜勒·瓦希德”
},
{
“潜艇”:[{
“潜艇”:[{
“id”:“12826bf03710200044e0bfc8bcbe5db1”,
“标题”:“阿方索·格里格伦”
}, {
“潜艇”:[{
“id”:“06826BF0371000044E0BFC8BCBE5D8A”,
“标题”:“Allyson Gillispie”
}, {
“id”:“b282abf03710200044e0bfc8bcbe5d28”,
“标题”:“艾伦·施万特”
}],
“id”:“22826bf03710200044e0bfc8bcbe5dec”,
“标题”:“Alejandra Prenatt”
}],
“id”:“0A826BF0371000044E0BFC8BCBE5D7A”,
“标题”:“阿德拉·塞万茨”
}, {
“id”:“4847c4d4d773020058c92cf65e61038e”,
“标题”:“Alisa Chinoy”
}, {
“id”:“71826BF0371000044E0BFC8BCBE5D3B”,
“标题”:“Aileen Mottern”
}, {
“id”:“a8f98bb0eb32010045e1a5115206fe3a”,
“头衔”:“亚伯拉罕·林肯”
}],
“id”:“7c2e6109dbd65300bde15901cf9619b5”,
“头衔”:“Raju Koyagura”
}
];
设newArray=[];
函数getAllId(arr,键){
arr.forEach(功能(项目){
用于(让项中的键){
如果(键===键){
newArray.push(项[键])
}else if(Array.isArray(项[键]){
getAllId(项[键],键)
}
}
})
}
getAllId(数据“id”)

console.log(newArray)
为什么不先尝试从第一层获取ìd,然后看看如何通过简单地迭代数组来实现呢?我打算建议对正则表达式进行字符串化和搜索,但是您的答案(如果它真的有效)比编写自定义递归更简单、更强大。