有关迭代的方法

有关菜单嵌套或者菜单循环的问题,一直找不到合适的代码来写,至于菜单嵌套,现在就不研究了,一般项目也不会用到特别深的,除非是赋权限的时候,才会嵌套的多一点。
之前项目里有用到关于菜单赋权的问题,当时是用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']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值