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

萌新求教!用js写递归,有点懵啦

萌新求教!用js写递归,有点懵啦

森栏 2019-06-18 09:33:22
问题描述想实现一个递归,但是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贡献1818条经验 获得超3个赞

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-06-18
  • 2 回答
  • 0 关注
  • 268 浏览
慕课专栏
更多

添加回答

举报

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