gpt4 book ai didi

javascript - 如何使用lodash从 child 那里找到父名并打印路径

转载 作者:行者123 更新时间:2023-12-04 08:40:13 56 4
gpt4 key购买 nike

我有一个像下面这样的集合

const tree = [
{
id: 1,
class_name: 'Home',
parent_id: 0,
},
{
id: 2,
class_name: 'Folder1',
parent_id: 1,
},
{
id: 3,
class_name: 'Folder2',
parent_id: 1,
},
{
id: 4,
class_name: 'SubFolder1',
parent_id: 2
},
{
id: 5,
class_name: 'EndFolder1',
parent_id: 4
}
]
在这个集合中,我知道子类名称为 SubFolder1,id 为 4,parent_id 为 2,我需要遍历回根节点以找到下面的路径。父 id 充当每个对象的 id。
SubFolder1
Folder1/SubFolder1
Home/Folder1/SubFolder1
我曾尝试使用 lodash find 哪个级别停止,当 parent_id 为 0 时,我需要遍历它的根。并添加路径。
 if (temp.parent_id !== '0') {
temp = find(tree, {id: temp.parent_id});
} else {
tempClassName = `${temp.class_name}`;
}

最佳答案

您可以获取一个包含所有节点和 id 的对象。作为关键并获取所有 parent ,直到没有 id可用。

const
getParents = (array, id) => {
const
nodes = array.reduce((r, o) => (r[o.id] = o, r), {}),
getP = id => id in nodes
? [...getP(nodes[id].parent_id), nodes[id].class_name]
: [];
return getP(id).join('/');
},
array = [{ id: 1, class_name: 'Home', parent_id: 0 }, { id: 2, class_name: 'Folder1', parent_id: 1 }, { id: 3, class_name: 'Folder2', parent_id: 1 }, { id: 4, class_name: 'SubFolder1', parent_id: 2 }, { id: 5, class_name: 'EndFolder1', parent_id: 4 }];

console.log(getParents(array, 4));

关于javascript - 如何使用lodash从 child 那里找到父名并打印路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64606055/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com