为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

沧海一幻觉 2018-09-05 14:13:07
逻辑稍微复杂点,就很容易出现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 等嵌套的,最多三层,但这段代码都有五层嵌套了。。 求教各位大神,这类代码应该怎么优化? 感谢感谢!!
查看完整描述

1 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

请使用递归。

var menus=[{

        id: "index",

        title: "首页",

        isVisible: true

    },

    {

        id: "apps",

        title: "应用中心",

        isVisible: true,

        children: [{

                id: "11",

                title: "aaa",

                isVisible: true,

                children:[{

                    id: "12",

                    title: "bbb",

                    isVisible: true,

                    children:[{

                        id: "13",

                        title: "ccc",

                        isVisible: true

                    }]

                }]

            }

        ]

    }

];



function func(array) {


    for(var i=0;i<array.length;i++)

    {

        if(array[i].isVisible){

            console.log(array[i].id)

        }

        if(array[i].children)

        {

            func(array[i].children);

        }

    }


}

console.time('time');

func(menus);

console.timeEnd('time');


查看完整回答
反对 回复 2018-10-18
  • 1 回答
  • 0 关注
  • 1243 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号