javascript - 更新树结构中的特定节点
问题描述
我一直在努力解决如何更新树结构中的特定节点。我拥有的是一个包含数千个对象的树结构,所有对象都有属性和一个 id,id 可以在树中出现多次。所以我想做的是用特定的 id 更新一些节点,然后使用更新的树,但我不知道该怎么做。
一些伪代码:
basenode = {
id: 1,
name: 'Basenode',
children: [{
id: 2,
name: 'Child node 1',
children: [
{
id: 4,
name: 'Child of child node',
children: []
},
{
id: 1,
name: 'Child of child node',
children: []
}
]
},
{
id: 3,
name: 'Child node 3',
children: []
}]
}
因此,例如,我想更新 id 为 1 的两个节点的名称,因为我具有相同的树结构,但在 id 为 1 的节点上更新了名称。
谁能给我一个正确的方向推动这个?
解决方案
function updatePropertyById(id, data, property, value) {
if (data.id == id) {
data[property] = value;
}
if (data.children !== undefined && data.children.length > 0) {
for (i = 0; i < data.children.length; i++) {
data.children[i] = updatePropertyById(id, data.children[i], property, value);
}
}
return data;
}
updatePropertyById(1, basenode, "name", "New Name");
推荐阅读
- mysql - MYSQL 不允许 JSON 数据类型
- r - 在 R 中将 for 循环重写为 lapply 函数
- php - 无法在codeigniter“slug”上加载特定页面
- neural-network - DeepLearning4J - 获取数据和训练模型
- javascript - Angular 从 API 调用返回数据作为 [Object Object],但在组件中未定义
- c - 未在 c 中显示结构数组的正确值
- python - ValueError:应定义“密集”输入的最后一个维度。找到`无`
- javascript - 计算圆的速度
- json - 使用 Promise 在单击按钮时获取 JSON 数据
- symfony - Symfony 3.4:在 EventListener 中访问学说