使用相同的键合并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}}
是。。。对不起。。我也在改变问题,请包括尝试的解决方案,为什么它们不起作用,以及预期的结果。这将真正帮助我们解决您迄今为止尝试过的代码的问题。可能重复的