我有一个json,想要获得id = 111的对象,深度可能因json而异。
object = [
{
id= 1,
name : 'a',
childNodes : [ {
id=11,
name:'aa',
childNodes:[{
id: 111,
name:'aaaa',
childNodes:[]
}]
}]
}]
必需的输出{ id: 111, name:'aaaa', childNodes:[] }
寻找最快的算法或方法。数据将超过35000个节点,深度达到20个。
任何帮助都将不胜感激。
答案 0 :(得分:1)
您可以使用request
循环为此创建递归函数。
for...in
答案 1 :(得分:1)
这是使用some
的递归函数:
function findNested(arr, id) {
var res;
return arr.some(o => res = Object(o).id === id ? o
: findNested(o.childNodes, id) ) && res;
}
var object = [{
id: 1,
name : 'a',
childNodes : [ {
id: 11,
name:'aa',
childNodes:[{
id: 111,
name:'aaaa',
childNodes:[]
}]
}]
}];
console.log(findNested(object, 111));
console.log(findNested(object, 9));