【发布时间】:2021-08-25 09:46:43
【问题描述】:
树形结构是这样的-
const init = [
{
name: 'A',
children: [
{
name: 'A1',
children: []
},
{
name: 'A2',
children: [
{
name: 'A21',
children: []
}
]
}
]
},
{
name: 'B',
children: [
{
name: 'B1',
children: []
},
{
name: 'B2',
children: []
}
]
}
]
我有变量
currentPath = ['A', 'A2', 'A21']node = { name: 'A211', children: [] }
我想将 init 转换为
const init = [
{
name: 'A',
children: [
{
name: 'A1',
children: []
},
{
name: 'A2',
children: [
{
name: 'A21',
children: [
{
name: 'A211',
children: []
}
]
}
]
}
]
},
{
name: 'B',
children: [
{
name: 'B1',
children: []
},
{
name: 'B2',
children: []
}
]
}
]
请告诉我我需要使用什么函数funcAppendNode(init, currentPath, node) 接受init、currentPath 和新节点并返回新的init。我认为它与递归有关,但我无法成功。
这是我迄今为止尝试过的。
const funcAppend = (init, currentPath, node) => {
let newState = [...init]
for (let i = 1; i < currentPath.length; i++) {
newState = newState.find(o => o.name === currentPath[i]).children
}
newState.push(node)
return newState
}
上面的函数正在返回
[ { name: 'A211', children: [] } ]
请帮忙。
【问题讨论】:
标签: javascript arrays recursion ecmascript-6 functional-programming