Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用递归将一个对象转换为另一个对象。Javascript_Javascript_Arrays_Frontend_Javascript Objects - Fatal编程技术网

如何使用递归将一个对象转换为另一个对象。Javascript

如何使用递归将一个对象转换为另一个对象。Javascript,javascript,arrays,frontend,javascript-objects,Javascript,Arrays,Frontend,Javascript Objects,我不认识路,所以我需要帮助。所以我有这个物体 { "label": "root", "children": [ { "label": "a", "value": "abc" }, { "label": "b", "value": 123 }, { "label": "c",

我不认识路,所以我需要帮助。所以我有这个物体

{   
"label": "root",
    "children": [
        {
            "label": "a",
            "value": "abc"
        },
        {
            "label": "b",
            "value": 123
        },
        {
            "label": "c",
            "children": [
                {
                    "label": 0,
                    "children": [
                        {
                            "label": "d",
                            "value": "def"
                        },
                        {
                            "label": "e",
                            "value": 1
                        },
                        {
                            "label": "f",
                            "children": [
                                {
                                    "label": 0,
                                    "children": [
                                        {
                                            "label": "g",
                                            "value": "ghi"
                                        },
                                        {
                                            "label": "h",
                                            "value": 456
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                },
                {
                    "label": 1,
                    "children": [
                        {
                            "label": "i",
                            "value": 1
                        },
                        {
                            "label": "j",
                            "value": "abc"
                        },
                       {
                            "label": "asd",
                            "children": [
                                {
                                    "label": 0,
                                    "children": [
                                        {
                                            "label": "qwe",
                                            "value": "kuracpalac"
                                        },
                                        {
                                            "label": "rtz",
                                            "value": "asdasdasdasd"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}
,我需要它将其转换为如下所示的新对象:

const obj = {
  a: "abc",
  b: 123,
  c: [
    {
      d: "def",
      e: 1,
      f: [
        {
          g: "ghi",
          h: 456
        }
      ]
    },
    {
      i: 1,
      j: "abc",
      asd: {
        qwe: "kuracpalac",
        rtz: "asdasdasdasd"
      }
    }
  ]
};

谢谢你的帮助:)

您可以使用两个函数,一个用于获取数组,具体取决于键(如果是整数值或指定的对象)。另一个函数返回具有新键/值对的对象,该键/值对可以是值,也可以是子数组的嵌套对象结构

函数分配(数组){
返回Object.assign(数组[0]?[]:{},…数组中的0);
}
函数getObject({label,value,children}){
返回{[label]:值| |赋值(children.map(getObject))};
}
var数据={label:“root”,子项:[{label:“a”,值:“abc”},{label:“b”,值:123},{label:“c”,子项:[{label:0,子项:[{label:“d”,值:“def”},{label:“e”,值:1},{label:“f”,子项:[{label:0,子项:[{label:“g”,值:“ghi”},{label:“h”,值:456},{label:1,子项:[{label:“i”,值:1},{label:“j”,值:“abc”},{label:“asd”,子项:[{label:0,子项:[{label:“qwe”,值:“kuracpalac”},{label:“rtz”,值:“asdasdasd”}]},
结果=getObject(数据).root;
console.log(结果);

。作为控制台包装器{max height:100%!important;top:0;}
您应该始终尝试在问题中包含您尝试过的任何内容,以便人们可以帮助您朝正确的方向前进,或者查看您理解失败的地方。非常感谢!这很有帮助!