从 JavaScript 中的嵌套对象结构中删除子项

时间:2021-06-02 20:48:45

标签: javascript loops object recursion data-structures

我有这个数据结构,并试图编写一个函数,如果我们调用具有数据结构和子 ID 的函数,我们可以删除特定子项及其所有子项。数据结构如下所示:

const dataStructure = {
  "id": 1,
  "name": "Parent",
  "parent_id": null,
  "children": [
    {
      "id": 2,
      "name": "P",
      "parent_id": 1,
      "children": []
    },
    {
      "id": 3,
      "name": "C",
      "parent_id": 1,
      "children": [
        {
          "id": 6,
          "name": "E",
          "parent_id": 3,
          "children": []
        }
      ]
    },
    {
      "id": 4,
      "name": "F",
      "parent_id": 1,
      "children": []
    }
  ]
}

因此,如果我调用 removeFromTree(dataStructure , id) 之类的函数,那么应该删除特定的 Id 及其子项(如果有)。我已经在下面编写了一个函数,它将 dataStructurename 作为参数,这似乎有效,但我需要使用 id 来实现它,以避免删除多个具有相同名称的团队。这是我已经写的:

function removeFromTree(dataStructure, name) {
  if (dataStructure.name.trim() === name.trim()) {
    dataStructure = undefined;
  } else {
    dataStructure.children.forEach((child, id) => {
      if (!removeFromTree(child, name)) dataStructure.children.splice(id, 1);
    });
  }

  return dataStructure;
}

任何关于使用 id 而不是名称来实现这个的建议都会很棒,谢谢。

0 个答案:

没有答案
相关问题