目前,我有一个具有以下格式的数组:
[{
key: "a"
}, {
key: "b"
}, {
key: "c"
}, {
key: "d"
}, {
key: "e"
}]
数组中的每个元素都是它旁边元素的父元素。
需要将其转换为以下格式:
[{
key: "a",
Nodes: [{
key: "b",
Nodes: [{
key: "c",
Nodes: [{
key: "d",
Nodes: [{
key: "e"
}]
}]
}]
}]
}]
我已经实现了这一点,但是我实现的逻辑相当冗长,现在我想优化代码。
所以我想知道最优化的方法
最佳答案
使用Array#reduceRight
让这变得简单:
const array = [{
key: "a"
}, {
key: "b"
}, {
key: "c"
}, {
key: "d"
}, {
key: "e"
}];
const nested = array.reduceRight((Nodes, obj) => {
if (Nodes) {
return [Object.assign({}, obj, { Nodes })];
} else {
return [obj];
}
}, null);
console.log(nested);
关于javascript - 将平面数组转换为嵌套父子格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45140401/