我有一个对象数组arr,我想将数组中的所有对象合并为一个。对象中还有重复的键。有没有办法可以做到这一点?任何帮助都会很棒。
var arr = [{ a: 1, a: 2 },
{ c: 1, d: 2 },
{ e: 14, f: 20 }];
我想要的输出是:
var arr = [{ a: 1,
a1: 2,
c: 1,
d: 2,
e: 14,
f: 20 }];
答案 0 :(得分:2)
假设所有密钥都是唯一的,并且您不想检查,请使用reduce
var combinedKeys = arr.reduce(function(a, item) {
Object.keys(item).map(function(key) {
a[key] = item[key];
});
return a;
}, {});
var singleArrayOfCombinedKeys = [combinedKeys]; //[Object a: 1b: 2c: 1d: 2e: 14f: 20__proto__: Object]
答案 1 :(得分:2)
您可以使用for
循环简单地遍历数组,并将每个项目的所有属性分配给组合对象:
var arr = [{ a: 1, b: 2 },
{ c: 1, d: 2 },
{ e: 14, f: 20 }];
var combinedObj = {};
for( var i = 0; i < arr.length; i++ )
{
var item = arr[i];
for(var key in item )
{
combinedObj[key] = item[key];
}//for()
}//for
console.log( combinedObj );
答案 2 :(得分:2)
您可以使用reduce()
和Object.assign()
var arr = [{ a: 1, b: 2 }, { c: 1, d: 2 }, { e: 14, f: 20 }];
var result = [arr.reduce((r, o) => Object.assign(r, o), {})];
console.log(result)