【发布时间】:2021-12-29 09:37:04
【问题描述】:
所以我有以下树结构:
const tree = {
id: "1",
tag: "pending",
subtasks: [
{ id: "2", tag: "pending", subtasks: [] },
{
id: "3",
tag: "in progress",
subtasks: [
{
id: "4",
tag: "pending",
subtasks: [
{
id: "6",
tag: "in progress",
subtasks: [
{
id: "10",
tag: "pending",
subtasks: [{ id: "11", tag: "complete", subtasks: [] }]
}
]
},
{ id: "7", tag: "complete", subtasks: [] }
]
},
{ id: "5", tag: "pending", subtasks: [] }
]
},
{ id: "4", tag: "complete", subtasks: [] }
]
};
我想删除任何具有“进行中”tag 的节点。但是,如果他们的tags 没有“进行中”,我也想保留已删除节点的子节点。将通过将它们移动到与其父级相同的深度和索引级别来保留它们。
所以,结果将如下所示:
const filteredTree = {
id: "1",
tag: "pending",
subtasks: [
{ id: "2", tag: "pending", subtasks: [] },
{
id: "4",
tag: "pending",
subtasks: [
{
id: "10",
tag: "pending",
subtasks: [{ id: "11", tag: "complete", subtasks: [] }]
},
{ id: "7", tag: "complete", subtasks: [] }
]
},
{ id: "5", tag: "pending", subtasks: [] },
{ id: "4", tag: "complete", subtasks: [] }
]
};
我怎样才能做到这一点?
【问题讨论】:
-
你尝试了什么?
标签: javascript typescript filter tree