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

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

慕运维8079593

这个递归是很简单的啦。。。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即为你想要的结果。

慕的地6264312

这不就是递归吗?functionfindLeafNodes(items=[]){returnitems.reduce((leafs,{id,isLeaf,submenus})=>{if(isLeaf)leafs.push(id);if(submenus)leafs.push(...findLeafNodes(submenus));returnleafs;},[]);}console.log(findLeafNodes(menus));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript