从多级嵌套数组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,然后看看如何通过简单地迭代数组来实现呢?我打算建议对正则表达式进行字符串化和搜索,但是您的答案(如果它真的有效)比编写自定义递归更简单、更强大。