【问题标题】:convert nested object into recursive array or nested array in javascript es6在javascript es6中将嵌套对象转换为递归数组或嵌套数组
【发布时间】:2019-10-12 07:38:25
【问题描述】:

我使用了嵌套对象,我想将其转换为递归数组或嵌套数组。

我尝试像下面那样迭代对象,但它正在创建数组的单个对象。

任何人都可以提供建议或分享您的想法对我有帮助

        iterate(obj) {
                for (let property in obj) {
                  this.configArray.push({key: property,children: [], isValue: false, value: ''});
                    if (obj.hasOwnProperty(property)) {
                      const index = Object.keys(obj).indexOf(property);
                        if (typeof obj[property] == "object") {
                            this.iterate(obj[property]);
                        }
                        else {
                            this.configArray[index].children.push({ key: property, value: obj[property], isValue: true, children: [] });
                        }
                    }
                }
            }

输入

{
"Parent 1": {
    "11": "Child 1",
    "12": "Child 2",
},
"Parent 2": {
    "20": {
        "21": "Grand Child 1",
        "22": "Grand Child 2",          
    }
},
"Parent 3": {
    "31": "Child 1",
    "32": "Child 2",
}

}

输出

  [
{
    key: "Parent 1",
    value: "",
    children: [
        { key: 11, value: "Child 1", children: [] },
        { key: 12, value: "Child 2", children: [] }
    ]
},
{
    key: "Parent 2",
    value: "",
    children: [
        {
            key: 20,
            value: "",
            children: [
                { key: 21, value: "Grand Child 1", children: [] },
                { key: 22, value: "Grand Child 2", children: [] }
            ]
        }
    ]
},
{
    key: "Parent 3",
    value: "",
    children: [
        { key: 31, value: "Child 1", children: [] },
        { key: 32, value: "Child 2", children: [] }
    ]
},
];

【问题讨论】:

    标签: javascript arrays json recursion ecmascript-6


    【解决方案1】:

    如果value 是一个对象,您可以采用递归方法并映射值或子项。

    function transform(object) {
        return Object
            .entries(object)
            .map(([key, value]) => Object.assign({ key }, value && typeof value === 'object'
                ? { value: '', children: transform(value) }
                : { value, children: [] }
            ));
    }
    
    var data = { "Parent 1": { 11: "Child 1", 12: "Child 2" }, "Parent 2": { 20: { 21: "Grand Child 1", 22: "Grand Child 2" } }, "Parent 3": { 31: "Child 1", 32: "Child 2" } },
        result = transform(data);
    
    console.log(result);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      猜你喜欢
      • 2022-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-13
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      • 2010-12-18
      相关资源
      最近更新 更多