目前,我有一个格式如下的数组:
[{
key: "a"
}, {
key: "b"
}, {
key: "c"
}, {
key: "d"
}, {
key: "e"
}]
数组中的每个元素都是其旁边元素的父元素。
需要将其转换为以下格式:
[{
key: "a",
Nodes: [{
key: "b",
Nodes: [{
key: "c",
Nodes: [{
key: "d",
Nodes: [{
key: "e"
}]
}]
}]
}]
}]
我已经实现了这一点,但我实现的逻辑非常冗长,现在我想优化代码。
所以我想知道最优化的方法
答案 0 :(得分:1)
使用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);