如何优化多层嵌套的循环和条件判断代码?

逻辑稍微复杂点,就很容易出现for循环中嵌套if语句。比如:

menus:[{        id:"index",        title:"首页",        isVisible:true
    },{        id:"apps",        title:"应用中心",        isVisible:true,        
    children:[{                id:"index",                title:"首页",                isVisible:true
            }
        ]
    }
]

这段代码先遍历menus数组,然后判断是否显示,在判断是否有二级栏目,再遍历二级栏目。。简化版代码:

for(var i=0;i<menus.length;i++){    if(menus[i].isVisible == true){
        dosomething....        if(menus[i].children){            
        for(var j=0;j<menus[i].children.length;j++){                if(menus[i].children[j].isVisible == true){
                    dosomething.....
                }
            }
        }
    }
}

有些代码检测工具是不赞同多层for/if 等嵌套的,最多三层,但这段代码都有五层嵌套了。。 求教各位大神,这类代码应该怎么优化? 感谢感谢!!


沧海一幻觉
浏览 1244回答 1
1回答

侃侃尔雅

请使用递归。var menus=[{&nbsp; &nbsp; &nbsp; &nbsp; id: "index",&nbsp; &nbsp; &nbsp; &nbsp; title: "首页",&nbsp; &nbsp; &nbsp; &nbsp; isVisible: true&nbsp; &nbsp; },&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; id: "apps",&nbsp; &nbsp; &nbsp; &nbsp; title: "应用中心",&nbsp; &nbsp; &nbsp; &nbsp; isVisible: true,&nbsp; &nbsp; &nbsp; &nbsp; children: [{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id: "11",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; title: "aaa",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isVisible: true,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; children:[{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id: "12",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; title: "bbb",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isVisible: true,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; children:[{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id: "13",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; title: "ccc",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isVisible: true&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; ]&nbsp; &nbsp; }];function func(array) {&nbsp; &nbsp; for(var i=0;i<array.length;i++)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; if(array[i].isVisible){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log(array[i].id)&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; if(array[i].children)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; func(array[i].children);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}console.time('time');func(menus);console.timeEnd('time');
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript