2017-11-03 4 views
-1

Ich habe ein Array von Objekten, die von einer externen API gefüttert wird zB [{prop: val1}, {prop: val2}, {prop: val3} .... ]JavaScript Hinzufügen einer Eigenschaft zu allen Objekten in einem Array

Ich muss dieses Objekt (mein Code) an eine Drittanbieter-Bibliothek füttern, die erwartet, dass der Name der Eigenschaft auf dem Objekt 'xyz' anstelle von 'prop' lautet.

Was ist der effizienteste Weg (Speicher weise und schneller) im Grunde beide zu vermeiden: 1. Iteration über das Array 2. Hinzufügen von ‚xyz‘ Eigenschaft auf alle Objekte im Array

dies zu erreichen?

Ich denke entlang der Linien ein Getter für xyz zu allen Objekten hinzufügen, die den 'prop' Wert zurückgeben, aber das die Schleife nicht speichern. Das Hinzufügen auf der Prototyp-Ebene (Object.property) scheint zu diesem Zeitpunkt eine schlechte Idee zu sein.

Edit: Ich bin nicht auf der Suche nach verschiedenen Möglichkeiten zum Durchlaufen von Arrays in Javascript wie ForEach oder Karte. Ich habe eine sehr spezifische Frage, und ich bin daran interessiert zu erkunden, ob es überhaupt möglich ist, einfach einen Property-Proxy für 'xyz' zu haben.

+0

Mögliches Duplikat [Add-Eigenschaft auf ein Array von Objekten] (https zugewiesen://stackoverflow.com/questions/38922998/add-property-to-an-array-of-objects) –

+0

@LucaDeNardi alle Lösungen gibt es Schleifen durch das Array und das Hinzufügen der Eigenschaft. Genau das möchte ich vermeiden. – necromancer

+0

Das sind die einzigen Möglichkeiten, dies zu tun. Die Tatsache, dass ein Array eine Liste von _multiple_ Elementen ist, erfordert, dass Sie _loop_ durch alle Elemente führen. –

Antwort

0

Array-Map wird verwendet, um durch ein Array zu fahren.

myArray.map(function(obj){ 
    obj.xyz = 'yourvalue'; 
    return obj; 
} 
+0

Das gibt immer noch eine O (N) -Lösung. Nicht wahr? – UchihaItachi

+0

Mit 'Array.prototype.map()' transformieren Sie jedes Element eines Arrays und geben diese transformierten Werte in einem neu erstellten Array zurück. – Andreas

0

Sie können Array.map verwenden, um eine neue aus dem Array erstellen Sie von der API erhalten.

var newArray = oldArray.map(function(obj){ 
    return {newKey : obj.prop}; 
}); 

In diesem Beispiel newKey wird die Schlüssel Eigenschaft, die Sie wollen, statt 'prop' sein, und es ist der alte 'prop' Wert

+0

Sie haben Recht. Bearbeitete meine Antwort. –

Verwandte Themen