为了账号安全,请及时绑定邮箱和手机立即绑定

萌新!提问个js的问题,这种递归要怎么处理呢?十分感谢

萌新!提问个js的问题,这种递归要怎么处理呢?十分感谢

红糖糍粑 2019-08-21 20:05:49
问题描述想实现一个递归,但是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);
                            
查看完整回答
反对 回复 2019-08-21
  • 2 回答
  • 0 关注
  • 268 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信