2016-07-07 7 views
0

Ich habe ein Array von Objekten arr und ich möchte alle Objekte im Array zu einem kombinieren. Es gibt auch wiederholte Tasten in den Objekten. Kann ich das irgendwie machen? Jede Hilfe wäre großartig.Kombinieren aller Objekte in einem Array zu einem

var arr = [{ a: 1, a: 2 }, 
{ c: 1, d: 2 }, 
{ e: 14, f: 20 }]; 

Der Ausgang ich will, ist:

var arr = [{ a: 1, 
      a1: 2, 
      c: 1, 
      d: 2, 
      e: 14, 
      f: 20 }]; 
+0

2 Minuten Lösung: https://jsfiddle.net/osp5fawq/ – chf

+0

Haben Sie bedeuten, dass Ihr Ausgang ist soll 'a' und' b' haben und nicht 'a' und' a', oder? – KevBot

+0

Ich habe mehrere Schlüssel, die gleich sind und sie umbenennen möchten, wenn es Duplikate gibt. –

Antwort

2

Unter der Annahme, alle Schlüssel sind einzigartig und Sie möchten, können 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] 
+0

Dies ist eine gute Antwort, also wie würde ich dieses Problem angehen, wenn ich Schlüssel habe, die nicht einzigartig sind, aber immer noch wollen sie enthalten. –

+0

@JacobBrauchler - Hängt vom Ergebnis ab - suchst du die Zahlen zusammenzufassen? – tymeJV

+0

nein I Ich möchte sie nicht zusammenfassen Ich möchte, dass das Objekt wie die Ausgabe in meiner Frage aussieht, ich habe nur die Zahlen als Beispiel verwendet. –

2

Sie einfach durch die iterieren verwenden nicht überprüfen Array mit for Schleife und weisen Sie dem kombinierten Objekt alle Eigenschaften jedes Elements zu:

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

könnten Sie verwenden reduce() und 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)

Verwandte Themen