有关菜单嵌套或者菜单循环的问题,一直找不到合适的代码来写,至于菜单嵌套,现在就不研究了,一般项目也不会用到特别深的,除非是赋权限的时候,才会嵌套的多一点。
之前项目里有用到关于菜单赋权的问题,当时是用elementUI来实现的,选择父节点会要把子节点也要选上。
先上代码
funxiton getCheckedNodes(arr){
const checkNodes=[];
arr.forEach(item=>{
if(item.children){
item.children.forEach(a=>{
if(a.children){
a.children.forEach......
}else{
checkNodes.push(a);
}
})
}else{
checkNodes.push(item);
}
})
}
这样写就比较繁琐,代码重复性较高,所以就改造了一下
const checkNodes=[];
function getCheckedNodes(arr){
arr.forEach(item=>{
if(item.children){
getCheckedNodes(item.children);
}else{
checkNodes.push(item.id);
}
})
}
const arr1=[
{
name:'a',
children:[
{
name:'as',
id:'as1'
},
{
name:'aw',
children:[
{
name:'aww',
children:[
{
name:'ar',
id:'ar1'
},
{
name:'ar',
children:[
{
name:'zz',
id:'zz1'
}
]
}
]
}
]
}
]
}
]
const arr2=getCheckedNodes(arr1);
console.log(checkNodes);
//['as1', 'ar1', 'zz1']