javascript - 将一个简单的数组转换为复杂的对象,并将项目作为子数组

标签 javascript arrays

使用 javascript ES6,我试图通过一种简单的算法来转换包含字符串的数组,但没有成功,没有大小限制,因此我需要一个以数组项作为标签的对象子数组中的每个项目,取决于他的位置,有点难以解释,

这是我“之前”得到的和“之后”我想要的。

before = ["a","b","c","d"]

after = {
        name: "a"
        children: [
            {
                name: "b",
                children: [
                    {
                        name: "c",
                        children: [
                            name: "d"
                        ]
                    }
                ]
            }
        ]
    }

我完全被封锁了,谢谢你的帮助

最佳答案

您可以使用 Array#reduceRight从数组创建结构。

reduceRight() 从末尾取一个元素,用对象包裹它,并将之前的结果添加到 children 数组中。使用 Object#assign 有条件地分配 child ,因为最后一个对象没有 child 。

const before = ["a","b","c","d"];

const after = before.reduceRight((r, name) => 
  Object.assign({ name }, r !== null ? { children: [r] } : {}), 
  null);

console.log(after);

关于javascript - 将一个简单的数组转换为复杂的对象,并将项目作为子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47912940/

相关文章:

javascript - 生成动态画廊jquery

javascript - jQuery 根据屏幕分辨率对齐表格(行数/单元格数)

javascript - 尝试使用数组制作包含视频和图像的幻灯片,但图片不会显示

c - 在结构中初始化 main vs 中的 char 数组

python - 将 PIL 图像转换为 numpy 数组有时不起作用

javascript - Ace 编辑器和 vim 键绑定(bind) : using :w command

javascript - 将自执行 JavaScript 函数放入 'normal' 函数中

javascript - 如何获取js错误的行号或文件名?

php 多维数组转换为 jQuery

arrays - Ruby:根据条件从深层嵌套的 JSON 结构中提取元素