从嵌套的复杂对象中获取特定对象

时间:2017-07-21 10:03:27

标签: javascript performance underscore.js lodash javascript-objects

我有一个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个。

任何帮助都将不胜感激。

2 个答案:

答案 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));