Javascript 将数组中的所有对象合并为一个

Javascript 将数组中的所有对象合并为一个,javascript,arrays,object,Javascript,Arrays,Object,我有一个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:

我有一个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 }];

假设所有键都是唯一的,并且您不想检查,请使用
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]

假设所有键都是唯一的,并且您不想检查,请使用
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]

您可以使用
for
循环遍历数组,并将每个项的所有属性分配给组合对象:

var arr=[{a:1,b:2},
{c:1,d:2},
{e:14,f:20}];
var combinedObj={};
对于(变量i=0;iconsole.log(combinedObj)
您可以使用
for
循环遍历数组,并将每个项的所有属性分配给组合对象:

var arr=[{a:1,b:2},
{c:1,d:2},
{e:14,f:20}];
var combinedObj={};
对于(变量i=0;i
您可以使用
reduce()
Object.assign()

vararr=[{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)
您可以使用
reduce()
Object.assign()

vararr=[{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)
2分钟解决方案:你的意思是你的输出应该有
a
,和
b
,而不是
a
,对吗?我有多个相同的键,如果有重复的,我想重命名它们。@KevBot是的,这就是我想要的输出,基本2分钟解决方案:你的意思是你的输出应该有
a
b
,而不是
a
a
,对吗?我有多个相同的键,如果有重复的,我想重命名它们。@KevBot是的,这就是我想要的输出,基本上这是一个很好的答案,那么,如果我确实有一些键不是唯一的,但仍然希望包含它们,我该如何处理这个问题呢?@JacobBrauchler——取决于你想要的结果——你想把这些数字加起来吗?不,我不想加起来,我想让对象看起来像我问题中的输出,我只是以数字为例。@JacobBrauchler——如果同一个键有两次,它就不能在你想要的结构中。钥匙必须是唯一的。您可以组合这些值,或者创建一个值数组。有没有一种方法,如果它不是唯一的,您可以重命名它?这是一个很好的答案,那么,如果我确实有一些键不是唯一的,但仍然希望包含它们,我该如何处理这个问题呢?@JacobBrauchler——取决于你想要的结果——你想把这些数字加起来吗?不,我不想加起来,我想让对象看起来像我问题中的输出,我只是以数字为例。@JacobBrauchler——如果同一个键有两次,它就不能在你想要的结构中。钥匙必须是唯一的。您可以组合这些值,或者创建一个值数组。是否有一种方法,如果它不是唯一的,您可以重命名它?