gpt4 book ai didi

javascript - 在javascript中映射嵌套数组

转载 作者:行者123 更新时间:2023-12-02 16:22:10 25 4
gpt4 key购买 nike

我有一个像这样的嵌套对象数组:

let data = [
{
id: 1,
title: "Abc",
children: [
{
id: 2,
title: "Type 2",
children: [
{
id: 23,
title: "Number 3",
children:[] /* This key needs to be deleted */
}
]
},
]
},
{
id: 167,
title: "Cde",
children:[] /* This key needs to be deleted */
}
]

我想要的只是递归地找到没有子项的leaves(当前是一个空数组)并从中删除children属性。

这是我的代码:

normalizeData(data, arr = []) {
return data.map((x) => {
if (Array.isArray(x))
return this.normalizeData(x, arr)
return {
...x,
title: x.name,
children: x.children.length ? [...x.children] : null
}
})
}

最佳答案

您需要为此使用递归:

let data = [{
id: 1,
title: "Abc",
children: [{
id: 2,
title: "Type 2",
children: [{
id: 23,
title: "Number 3",
children: [] /* This key needs to be deleted */
}]
}]
},
{
id: 167,
title: "Cde",
children: [] /* This key needs to be deleted */
}
]

function traverse(obj) {
for (const k in obj) {
if (typeof obj[k] == 'object' && obj[k] !== null) {
if (k === 'children' && !obj[k].length) {
delete obj[k]
} else {
traverse(obj[k])
}
}
}
}

traverse(data)
console.log(data)

关于javascript - 在javascript中映射嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54379151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com