将flat数组转换为嵌套的父子格式

时间:2017-07-17 09:23:27

标签: javascript

目前,我有一个格式如下的数组:

[{
    key: "a"
}, {
    key: "b"
}, {
    key: "c"
}, {
    key: "d"
}, {
    key: "e"
}]

数组中的每个元素都是其旁边元素的父元素。

需要将其转换为以下格式:

[{
    key: "a",
    Nodes: [{
        key: "b",
        Nodes: [{
            key: "c",
            Nodes: [{
                key: "d",
                Nodes: [{
                    key: "e"
                }]
            }]
        }]
    }]
}]

我已经实现了这一点,但我实现的逻辑非常冗长,现在我想优化代码。

所以我想知道最优化的方法

1 个答案:

答案 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);