首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何创建基于键数组的嵌套JSON?

如何创建基于键数组的嵌套JSON?
EN

Stack Overflow用户
提问于 2018-02-18 19:38:13
回答 1查看 146关注 0票数 1

给定输入:

let input = [
  {
    schema: ["user", "email"],
    value: "test@test.com"
  },
  {
    schema: ["user", "name", "firstName"],
    value: "John"
  },
];

let output = {};

for (let i = 0; i < input.length; i++) {
    let data = input[i];

    for (let j = 0; j < data.schema.length; j++) {
        let s = data.schema[j];
        // How to set nested levels here ? eg: output["user"]["email"] = {};
    }
}

预期输出:

{
    "user": {
        "email": "test@test.com",
        "name": { 
            "firstName": "John" 
        }
    }
}

这里的"schema“表示数据在JSON中的嵌套结构。

使用Javascript动态设置嵌套属性的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-18 20:15:22

您可以使用reduce“加深”输出对象,直到需要设置属性/值的级别:

const input = [{schema: ["user", "email"],value: "test@test.com"},{schema: ["user", "name", "firstName"],value: "John"},];
const output = {};

for (const obj of input) {
    obj.schema.slice(0, -1).reduce(
        (acc, lvl) => acc[lvl] || (acc[lvl] = {}), 
        output
    )[obj.schema.slice(-1)[0]] = obj.value;
}

console.log(output);

如果模式数组有2个以上的值,也可以使用这种方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48851226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档