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

有没有人遇到过这个问题哈!如何快速递归检索数组中每个对象元素的符合要求的属性值?怎么回事哈啊?

有没有人遇到过这个问题哈!如何快速递归检索数组中每个对象元素的符合要求的属性值?怎么回事哈啊?

哆啦的时光机 2019-09-25 16:33:10
假如我有一个menus的数组,数组中每个元素是一个对象,对象里有3个关键属性:id,isLeaf(0为非叶子节点,1是叶子节点),submenus.然后submenus又是一个数组,数组中每个元素是一个对象.其实说白了就就是一堆三级的菜单栏.我现在要寻找所有isLeaf=1的节点,获取他们的id,这个有点难写啊,lodash有相应方法吗?
查看完整描述

2 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

这个递归是很简单的啦。。。
functiontreeFind(menus,result=[]){
menus.forEach(data=>{
data.isLeaf===1&&result.push(data)
data.submenus&&data.submenus.length&&treeFind(data.submenus,result)
})
returnresult
}
调用:
letresult=treeFind(menus)
result即为你想要的结果。
                            
查看完整回答
反对 回复 2019-09-25
?
慕容森

TA贡献1853条经验 获得超18个赞

这不就是递归吗?
functionfindLeafNodes(items=[]){
returnitems.reduce((leafs,{id,isLeaf,submenus})=>{
if(isLeaf)leafs.push(id);
if(submenus)leafs.push(...findLeafNodes(submenus));
returnleafs;
},[]);
}
console.log(findLeafNodes(menus));
                            
查看完整回答
反对 回复 2019-09-25
  • 2 回答
  • 0 关注
  • 294 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号