我需要更新元素的嵌套列表。
列表可以有无限多个嵌套元素,我需要根据级别和位置找到它们来更新数组。
基本上,我正在做一个树视图,我需要动态地添加节点,所以它可以是动态生成的无限嵌套节点。
我的基本结构是:
const tree = {
id: 'root',
name: 'Project: ' + hxr.data.project.name,
level: 0,
children: [
{
id: 'deliverables',
name: 'Deliverables',
children: [
{
id: 'd1',
name: 'Column A',
children: [
{
id: 'c12',
name: 'config',
children: [],
level: 1
},
{
id: 'c123',
name: 'orthomosaic',
children: [],
level: 1
}
],
level: 1
},
{
id: 'd12',
name: 'Column B',
children: [
{
id: 'c121',
name: 'config',
children: [],
level: 1
}
],
level: 1
}
],
level: 1
}
]
}
注意这是一个对象,前两层总是静态的,所以,如果我想更新新元素,我会做:
tree['children'][0]['children'].push(_node);
其中我的节点结构是:
const _node = {
id: uuid(),
name: node.text,
children: [],
level: 1,
type: node.type ?? 'folder'
}
当我动态地添加一个节点,并且因为丢失了引用而想向该节点添加更多元素时,我遇到了困难。
在我看来应该是这样的:
1
tree['children'][0]['children'][pos].push(_node);
2
tree['children'][0]['children'][pos]['children'].push(_node);
2
tree['children'][0]['children'][pos]['children'][pos2]['children'].push(_node);
但既然它是动态的,它可能是无限的。有什么想法吗?
1条答案
按热度按时间uqxowvwt1#
我可以用另一种方法解决这个问题。
因为我需要向selected添加一个子节点,所以我添加了一个id参数,然后对数组执行一个find deep函数,以查找和更新所选节点。