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

像这种数据格式如何递归

像这种数据格式如何递归

青春有我 2019-05-21 10:49:41
letarr=[{role:'admin',left:'fzz',children:[{role:'other',right:'pdd',children:[{role:'admin'}]}]}]像这种数据格式如何递归返回一个数组,数据格式保持不变,但是取出里面role为admin的呢?(包括children里面的数据也要对role进行筛选)如果父级role不是admin,则该级和它的children都丢弃返回:arr=[{role:'admin',left:'fzz',children:[{role:'admin',right:'pdd'}]}]
查看完整描述

2 回答

?
哔哔one

TA贡献1854条经验 获得超8个赞

这需求改的和之前差的很大哦...这个答案是应之前的需求:返回所有admin,并且删除children中admin。
getRoles(getData());
functiongetRoles(data,role='admin'){
letresArr=[];
main(data);
returnresArr;
functionmain(data){
if(data&&data.length){
data.forEach((d,i)=>{
if(d.role==='admin')resArr.push(data.splice(i,1));
if(d.children&&d.children.length)main(d.children);
});
}
}
}
functiongetData(){
return[{
role:'other',
children:[{
role:'admin',
index:'1'
},{
role:'other'
}]
},{
role:'admin',
index:'2',
children:[{
role:'other',
children:[{
role:'admin',
index:'3'
}]
}]
}];
}
                            
查看完整回答
反对 回复 2019-05-21
?
米脂

TA贡献1836条经验 获得超3个赞

letarr=[{
role:'admin',
left:'fzz',
children:[{
role:'other',
right:'pdd',
children:[{
role:'admin'
}]
}]
}]
arr.find(function(x){
returnx.role==='admin';
})
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 334 浏览
慕课专栏
更多

添加回答

举报

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