我有一个对象数组,代表一个嵌套的导航列表。
[
{
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库中包含的函数
答案 0 :(得分:11)
这是一种循环遍历数组的方法:
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);
这是你需要的,还是你需要更具体的东西? 根据你上次的评论,如果你还需要其他任何东西,我有点困惑。