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

如何快速递归检索数组中每个对象元素的符合要求的属性值?大佬们有什么好的建议?

如何快速递归检索数组中每个对象元素的符合要求的属性值?大佬们有什么好的建议?

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

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超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-19
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

这不就是递归吗?
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-19
  • 2 回答
  • 0 关注
  • 307 浏览
慕课专栏
更多

添加回答

举报

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