javascript - 将平面数组转换为嵌套父子格式

标签 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"
                }]
            }]
        }]
    }]
}]

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

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

最佳答案

使用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/

相关文章:

javascript - 在 angularjs 中执行事件时启用文本框

javascript - 正则表达式统一格式化文件名和路径

javascript - 按下按钮时无法使用 jquery 打印字符串

javascript - 更改 Twitter Feed 中的 Twitter Logo

javascript - 数组映射 react 组件调用子函数

javascript - 无法使用 chrome 43 beta 设置 xhr.responseType

javascript - 如何使用附加接口(interface)定义通用 HOC 以添加到 props

javascript - 使用 __proto__ 的简单 javascript 委托(delegate)

javascript - 基于背景颜色对所有元素使用 jQuery 过滤器

javascript - 单击元素外部的另一个链接时返回到先前状态的最有效方法是什么? (jQuery)