首页 > 解决方案 > 更新树结构中的特定节点

问题描述

我一直在努力解决如何更新树结构中的特定节点。我拥有的是一个包含数千个对象的树结构,所有对象都有属性和一个 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 的节点上更新了名称。

谁能给我一个正确的方向推动这个?

标签: javascripttree

解决方案


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");


推荐阅读