逻辑稍微复杂点,就很容易出现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 等嵌套的,最多三层,但这段代码都有五层嵌套了。。 求教各位大神,这类代码应该怎么优化? 感谢感谢!!
付费偷看金额在0.1-10元之间
这种含有子元素
children
,并且子元素和父级元素的结构是相似的,明显应该用递归
或者while
来进行遍历嘛。看看是不是可以这样?
for(var i=0;i<menus.length;i++){
}
请使用递归。
换种写法可以降到3层:
一周热门 更多>