使用相同的键合并javascript数组值

使用相同的键合并javascript数组值,javascript,arrays,Javascript,Arrays,将阵列重新组织为输出的最佳方法是什么?我需要将具有相同键的值合并到一个对象数组中 输入数组: var array = [ { aaa: { name: "foo1", value: "val1" } }, { aaa: { name: "foo2", value: "val2" } }, { bbb: { name

将阵列重新组织为输出的最佳方法是什么?我需要将具有相同键的值合并到一个对象数组中

输入数组:

 var array = [
    {
      aaa: {
        name: "foo1",
        value: "val1"
      }
    }, 
    { 
      aaa: {
        name: "foo2",
        value: "val2"
      }
    },
    {
     bbb: {
        name: "foo3",
        value: "val3"
      }
    },
    {
      bbb: {
        name: "foo4",
        value: "val4"
      }
    }
];
所需输出:

var output = [
   { 
    aaa: 
        [{
            name: "foo1",
            value: "val1"
        },{
        name: "foo2",
        value: "val2"
    }]
   },
   {
    bbb: 
        [{
            name: "foo3",
            value: "val3"
        },{
        name: "foo4",
        value: "val4"
    }]
  }

];
实现这一目标的最佳方式是什么?
提前感谢。

您可以使用
reduce

var数组=[{aaa:{name:“foo1”,value:“val1”},{aaa:{name:“foo2”,value:“val2”},{bbb:{name:“foo3”,value:“val3”},{bbb:{name:“foo4”,value:“val4”}];
var newArray=array.reduce((c,v)=>{
用于(v中的变量k){
c[k]=c[k]| |[];
c[k].推(v[k]);
}
返回c;
}, {});

log(newArray)
您可以使用
reduce
forEach
功能

var数组=[{aaa:{name:“foo1”,value:“val1”},{aaa:{name:“foo2”,value:“val2”},{bbb:{name:“foo3”,value:“val3”},{bbb:{name:“foo4”,value:“val4”}];
var result=array.reduce((a,c)=>{
Object.keys(c).forEach((k)=>{
if(a[k]){
a[k].推(c[k]);
}否则{
a[k]=[c[k]];
}
})
返回a;
}, {});
控制台日志(结果)

.as控制台包装{max height:100%!important;top:0;}
该数组无效。您的意思是:
{aaa:{name:{foo1',value:'val1}}
是。。。对不起。。我也在改变问题,请包括尝试的解决方案,为什么它们不起作用,以及预期的结果。这将真正帮助我们解决您迄今为止尝试过的代码的问题。可能重复的