在javascript中实现这一点的最佳方法是什么?

在javascript中实现这一点的最佳方法是什么?,javascript,Javascript,我有一个对象数组,我想转换成另一个对象 var input = [ { "type": "Pant", "brand": "A", "subBrand":"P", "size": "10"}, {"type": "Pant", "brand": "A", "subBrand":"P", "size": "12"}, {"type": "Pant", "brand": "A", "subBrand":"Q", "size": "12"}, {"type": "Pant",

我有一个对象数组,我想转换成另一个对象

var input = [
   { "type": "Pant", "brand": "A", "subBrand":"P", "size": "10"},
   {"type": "Pant", "brand": "A", "subBrand":"P", "size": "12"},
   {"type": "Pant", "brand": "A", "subBrand":"Q", "size": "12"},
   {"type": "Pant", "brand": "B", "subBrand":"P", "size": "10"},
   {"type": "Shirt", "brand": "A", "subBrand":"P", "size": "10"}
];
输出应采用以下格式:

output = {
    "Pant" : {
       "A" : {
          "P" : {
            "size" : [10,12]
          },
          "Q" : {
           "size" : [12]
          }
       }
       "B" : {
          "P" : {
            "size" : [10]
          }
       }
     },
     "Shirt" : {
        "A" : {
          "P" : {
            "size" : [10]
          }
       }
     }
};
我试图编写代码,但代码变得非常复杂,每次都要检查每件事情是否来得更早。 请告知。

您可以使用默认的空对象来使用和构建所需的对象

var input=[{“type”:“Pant”,“brand”:“A”,“subBrand”:“P”,“size”:“10”},{“type”:“Pant”,“brand”:“P”,“size”:“A”,“type”:“Pant”,“brand”:“A”,“subBrand”:“Q”,“size”:“12”},{“type”:“Pant”,“brand”:“B”,“subBrand”:“P”,“size”:“10”},{“type”:“Shirt”,“brand”:“A”,“subBrand”:“P”,“size”:“10”,
输出={};
input.forEach(函数(a){
输出[a.type]=输出[a.type]| |{};
输出[a.type][a.brand]=输出[a.type][a.brand]|{};
输出[a.type][a.brand][a.subBrand]=输出[a.type][a.brand][a.subBrand]|{大小:[]};
输出[a.type][a.brand][a.subBrand].size.push(a.size);
});

控制台日志(输出)您可以使用
.reduce

input.reduce((res,x)=>{
 res[x.type] = res[x.type] || {};
 res[x.type][x.brand] = res[x.type][x.brand] || {}
 res[x.type][x.brand][x.subBrand]= res[x.type][x.brand][x.subBrand] || {size:[]}
 res[x.type][x.brand][x.subBrand].size.push(x.size)
 return res;
},{})

非常感谢,真是太棒了!!