假如我有一个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即为你想要的结果。
慕的地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));
添加回答
举报
0/150
提交
取消