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'}]}]}];}
米脂
TA贡献1836条经验 获得超3个赞
letarr=[{role:'admin',left:'fzz',children:[{role:'other',right:'pdd',children:[{role:'admin'}]}]}]arr.find(function(x){returnx.role==='admin';})
添加回答
举报
0/150
提交
取消