【发布时间】:2018-11-03 23:07:05
【问题描述】:
我有一组这样的文件夹:
const foldersArray = [{id: "1", parentId: null, name: "folder1"}, {id: "2", parentId: null, name: "folder2"}, {id: "1.1", parentId: 1, name: "folder1.1"}, {id: "1.1.1", parentId: "1.1", name: "folder1.1.1"},{id: "2.1", parentId: 2, name: "folder2.1"}]
我想输出给定文件夹的所有父级的数组,以生成文件夹路径的类似面包屑的组件。
我目前有一个代码可以满足我的需求,但我想以更“功能性”的方式更好地编写它,递归地使用 reduce。
如果我这样做:
getFolderParents(folder){
return this.foldersArray.reduce((all, item) => {
if (item.id === folder.parentId) {
all.push (item.name)
this.getFolderParents(item)
}
return all
}, [])
}
我记录了输出,我可以看到它成功找到了第一个 Parent,然后重新执行代码,并输出 parent 的 parent...因为我的初始数组在每一步都逻辑重置为 []...可以'虽然找不到解决办法...
【问题讨论】:
标签: javascript recursion reduce