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

2016-10-14 11:36发布

逻辑稍微复杂点,就很容易出现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 等嵌套的,最多三层,但这段代码都有五层嵌套了。。 求教各位大神,这类代码应该怎么优化? 感谢感谢!!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
mishen - whatsns产品经理
1楼-- · 2016-10-14 11:44

这种含有子元素children,并且子元素和父级元素的结构是相似的,明显应该用递归或者while来进行遍历嘛。

看看是不是可以这样?
for(var i=0;i<menus.length;i++){

}

mishen - whatsns产品经理
4楼-- · 2016-10-14 11:42

请使用递归。

段曼 - 我很好
5楼-- · 2016-10-14 11:47

换种写法可以降到3层:

一周热门 更多>