问题描述想实现一个递归,但是js基础比较差,不知道咋实现。。相关代码//请把代码文本粘贴到下方(请勿用图片代替代码)vararray=[{name:'测试',component:()=>import('@/views/setting/ManageList'),meta:{title:'设备管理0',roles:[0,1,2,3,4]},children:[{component:()=>import('@/views/setting/ManageList'),meta:{title:'设备管理1',roles:[0,1]}},{component:()=>import('@/views/setting/ManageList'),meta:{title:'设备管理2',roles:[0]}}]}]你期待的结果是什么?题目描述希望最终得到的数据如下:vararray=[{name:'测试',component:()=>import('@/views/setting/ManageList'),meta:{title:'设备管理0',roles:[0,1,2,3,4]},children:[{component:()=>import('@/views/setting/ManageList'),meta:{title:'设备管理1',roles:[0,1]}}]}]functionfilterAsyncRouter(array,id){letres=[]array.filter(item=>{if(item.meta.roles.includes(id)){if(item.children){item.children=filterAsyncRouter(item.children,id)}res.push(item)}})console.log('res',res)}filterAsyncRouter(array,1);自己尝试写了下还是觉得不对。。可能表达的不太清楚,如果父节点有1,返回父节点,如果父节点跟子节点都有1,只需要返回有1的子节点。。没有1的子节点不需要返回~
2 回答
沧海一幻觉
TA贡献1824条经验 获得超5个赞
functionloop(arr,idx){for(vari=0,newArr=[];iif(arr[i].meta.roles.indexOf(idx)!=-1) newArr.push(arr[i]);if(arr[i].children)newArr[i].children=loop(arr[i].children,idx);}returnnewArr;}loop(arr,1);
添加回答
举报
0/150
提交
取消