下面是我的递归结构,我需要删除任何 id 匹配的节点。我一直在努力让这个完全适合我的
deleteNode(explorerData, itemId, isFolder)
功能。
这应该返回一棵删除了节点的树。如果需要,这是 CodeSandbox 的 link,但这不是真的需要
const explorer = {
id: "1",
name: "root",
isFolder: "true",
items: [
{
id: "2",
name: "public",
isFolder: "true",
items: [
{ id: "3", name: "index.html", isFolder: false, items: [] },
{ id: "4", name: "style.css", isFolder: false, items: [] }
]
},
{
id: "5",
name: "app.js",
isFolder: false,
items: []
},
{
id: "6",
name: "src",
isFolder: true,
items: [
{
id: "7",
name: "components",
isFolder: true,
items: [
{
id: "8",
name: "Folder.js",
isFolder: false,
items: []
}
]
}
]
}
]
};
const explorer = {"id":"1","name":"root","isFolder":"true","items":[{"id":"2","name":"public","isFolder":"true","items":[{"id":"3","name":"index.html","isFolder":false,"items":[]},{"id":"4","name":"style.css","isFolder":false,"items":[]}]},{"id":"5","name":"app.js","isFolder":false,"items":[]},{"id":"6","name":"src","isFolder":true,"items":[{"id":"7","name":"components","isFolder":true,"items":[{"id":"8","name":"Folder.js","isFolder":false,"items":[]}]}]}]}
const f = ({items, ...rest}, idMatch) =>
({...rest, items:items.filter(i=>+i.id!==+idMatch).map(i=>f(i, idMatch))})
console.log(f(explorer, 2))