我面临着从平面数组构建树的问题。我们有一个数组。
[
{
"h1": "h001",
"h2": "z001"
},
{
"h1": "h002",
"h2": "z002"
},
{
"h1": "h003",
"h2": "z003"
}
]
我想要得到这样的东西:
[{
"h1": "h001",
"h2": "z001",
"children": {
"h1": "h002",
"h2": "z002",
"children": {
"h1": "h003",
"h2": "z003"
}
}
}]
有办法实现吗?
谢谢!
最佳答案
这将是使用数组 map()
的好地方方法。本质上,我们将使用 slice()
获取数组的浅拷贝。 ,然后reverse()
它,然后使每个对象成为 children
下前一个对象的属性。属性(property)。完成后,我们重新 reverse()
用于获取原始订单并获取第一项的数组。
let values = [{
"h1": "h001",
"h2": "z001"
}, {
"h1": "h002",
"h2": "z002"
}, {
"h1": "h003",
"h2": "z003"
}];
let newValues = values.slice().reverse().map((e,i,a) => i ? (a[i] = { ...e, children: a[i-1] }) : a[i]).reverse()[0];
console.log(newValues);
输出:
{
"h1": "h001",
"h2": "z001",
"children": {
"h1": "h002",
"h2": "z002",
"children": {
"h1": "h003",
"h2": "z003"
}
}
}
关于javascript - 从平面数组构建一棵树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67058460/