Ich habe eine Reihe von Objekten wie unten gezeigt
Object {Results:Array[2]}
Results:Array[2]
[0-1]
0:Object
id=1
name: "Rick"
1:Object
id=2
name:'david'
Ich möchte jedem Element dieses Array von Objekten eine weitere Eigenschaft mit dem Namen Active hinzufügen.
Das Endergebnis sollte wie folgt sein.
Object {Results:Array[2]}
Results:Array[2]
[0-1]
0:Object
id=1
name: "Rick"
Active: "false"
1:Object
id=2
name:'david'
Active: "false"
Kann mir bitte jemand mitteilen, wie dies erreicht werden kann?
javascript
arrays
object
underscore.js
Patrick
quelle
quelle
Antworten:
Mit dieser
forEach
Methode können Sie eine bereitgestellte Funktion für jedes Element im Array einmal ausführen. In dieser bereitgestellten Funktion können Sie dieActive
Eigenschaft zum Element hinzufügen .Results.forEach(function (element) { element.Active = "false"; });
quelle
oder verwenden
map
Results.map(obj=> ({ ...obj, Active: 'false' }))
Bearbeitet, um den Kommentar von @adrianolsk wiederzugeben, um das Original nicht zu mutieren und stattdessen für jedes ein neues Objekt zurückzugeben.
Lesen Sie die Spezifikation
quelle
Results.map(obj=> ({ ...obj, Active : 'false' }))
Object.defineProperty(Results, "Active", {value : 'true', writable : true, enumerable : true, configurable : true});
quelle
Ich bin auch auf dieses Problem gestoßen, und als ich versuchte, es zu lösen, stürzte ich immer wieder die Chrome-Registerkarte ab, auf der meine App ausgeführt wurde. Es sieht so aus, als ob der Spread-Operator für Objekte der Schuldige war.
Mit ein wenig Hilfe von Adriansolsks Kommentar und Sidonaldsons Antwort oben habe ich Object.assign () verwendet, um die Ausgabe des Spread-Operators von babel wie folgt auszugeben:
this.options.map(option => { // New properties to be added const newPropsObj = { newkey1:value1, newkey2:value2 }; // Assign new properties and return return Object.assign(option, newPropsObj); });
quelle
Es geht durch das Objekt als Schlüsselwertstruktur. Anschließend wird jedem einzelnen Objekt in diesem Objekt eine neue Eigenschaft mit dem Namen "Aktiv" und ein Beispielwert für diese Eigenschaft ("Aktiv") hinzugefügt. Dieser Code kann sowohl für ein Array von Objekten als auch für ein Objekt von Objekten angewendet werden.
Object.keys(Results).forEach(function (key){ Object.defineProperty(Results[key], "Active", { value: "the appropriate value"}); });
quelle
Mit ES6 können Sie einfach Folgendes tun:
for(const element of Results) { element.Active = "false"; }
quelle