使用javascript / lodash迭代嵌套对象的数组

时间:2014-07-25 10:32:24

标签: javascript algorithm lodash

我有一个对象数组,代表一个嵌套的导航列表。

[
    {
        name: 'one',
        link: 'blah/blah',
        pages: [
            {
               name: 'one A'
               link: 'blah/blah',
               pages: []
            },
            {
               name: 'one B'
               link: 'blah/blah',
               pages: []
            },
            {
               name: 'one C'
               link: null,
               pages: [
                   {
                       name: 'one C I'
                       link: 'blah/blah',
                       pages: []
                   }
               ]
            }
        ]
    } 
]

第一级对象可以有一个链接,页面嵌套对象将有一个或多个链接。我不能假设嵌套的深度有限。我需要一个包含其名称,其链接(如果存在)及其所有父项的状态的对象。我目前的解决方案并不能解释超过3个嵌套级别,并且为每个层添加支持是费力的。

如果对解决方案产生影响,我还需要能够搜索生成的对象数组,以便稍后获取它们的链接。

我需要一个javascript解决方案,但也可以(并且希望)使用lodash库中包含的函数

1 个答案:

答案 0 :(得分:11)

这是一种循环遍历数组的方法:

http://jsfiddle.net/yLnZe/37/

var arrPages = [{
        name: 'one',
        link: 'blah/blah',
        pages: [{
               name: 'one A', 
               link: 'blah/blah',
               pages: []
            },
            {
               name: 'one B', 
               link: 'blah/blah',
               pages: []
            },
            {
               name: 'one C', 
               link: null,
               pages: [{
                       name: 'one C I', 
                       link: 'blah blah',
                       pages: []
                   }]
            }]
    }]; 

function recursiveFunction(collection){ 
    _.each(collection, function(model){ 
        console.log(model); 
        if(model.pages.length > 0){ 
            recursiveFunction(model.pages); 
        }
    }); 
}; 

recursiveFunction(arrPages); 

这是你需要的,还是你需要更具体的东西? 根据你上次的评论,如果你还需要其他任何东西,我有点困惑。