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

问题描述

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

const dataStructure = {
  "id": 1,"name": "Parent","parent_id": null,"children": [
    {
      "id": 2,"name": "P","parent_id": 1,"children": []
    },{
      "id": 3,"name": "C","children": [
        {
          "id": 6,"name": "E","parent_id": 3,"children": []
        }
      ]
    },{
      "id": 4,"name": "F","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 而不是名称来实现这个的建议都会很棒,谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)