通过javascript/lodash迭代嵌套对象数组

iterating through array of nested objects with javascript/lodash

本文关键字:嵌套 对象 数组 迭代 lodash javascript 通过      更新时间:2023-09-26

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

[
    {
        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库中的函数

下面是递归遍历数组的方法:

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

这是你需要的,还是你需要更具体的东西?根据你最后的评论,我有点困惑,如果你还需要什么。