【发布时间】:2020-11-03 23:19:24
【问题描述】:
我有一个数组:
const array = [
{ id: 1, parent_id: 0, visible: true },
{ id: 2, parent_id: 0, visible: true },
{ id: 3, parent_id: 1, visible: true },
{ id: 4, parent_id: 3, visible: true },
{ id: 5, parent_id: 4, visible: true },
{ id: 6, parent_id: 4, visible: true },
{ id: 7, parent_id: 3, visible: true },
{ id: 8, parent_id: 2, visible: true }
]
我想创建一个带有参数 ID 和 ARRAY 的函数,该函数返回新数组,此 ID 为 VISIBLE = FALSE,每个嵌套的子节点都为 PARENT_ID。
我的努力是这样的
const result = []
const findFitstHandler = (id, arr) => {
let j
for (let i in arr) {
if (arr[i].id === id) {
result.push(arr[i].id)
j = arr[i].id
}
}
findNested(j, arr)
return array.map(item => {
if (result.includes(item.id)) {
return {
...item,
visible: false
}
} else {
return item
}
})
}
const findNested = (id, arr) => {
for (let i in arr) {
if (arr[i].parent_id === id) {
result.push(arr[i].id)
findNested(arr[i].id, arr)
}
}
}
我确信有一个更优雅的解决方案。请帮帮我
【问题讨论】:
标签: javascript arrays object recursion nested