我有如下收藏
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为ID 4,父ID为2,我需要遍历根节点以查找以下路径。父ID充当每个对象的ID。
SubFolder1
Folder1/SubFolder1
Home/Folder1/SubFolder1
我尝试用lodash查找在一个级别停止,当parent_id为0时,我需要遍历到它的根,并添加路径。
if (temp.parent_id !== '0') {
temp = find(tree, {id: temp.parent_id});
} else {
tempClassName = `${temp.class_name}`;
}
您可以将具有所有节点的对象id
作为键并获取所有父对象,直到没有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));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句