In JavaScript kann die Arbeit mit Arrays von Objekten häufig vorkommen. Manchmal besteht möglicherweise die Notwendigkeit, Objekte innerhalb eines Arrays zu gruppieren und zu ändern und dabei bestimmte Eigenschaften beizubehalten. Ein solches Szenario beinhaltet das Summieren von Werten, die mit ähnlichen Schlüsseln verknüpft sind.
Lassen Sie uns diese Aufgabe anhand eines Beispielarrays von Objekten untersuchen:
const objects = [ { name: 'P1', value: 150 }, { name: 'P1', value: 150 }, { name: 'P2', value: 200 }, { name: 'P3', value: 450 }, ];
Unser Ziel ist es, Objekte nach der Eigenschaft „Name“ zu gruppieren und summieren Sie die Eigenschaft „Wert“ für jeden einzelnen „Namen“. Die gewünschte Ausgabe sollte wie folgt aussehen:
[ { name: 'P1', value: 300 }, { name: 'P2', value: 200 }, { name: 'P3', value: 450 }, ];
Um dies zu erreichen, können wir die Objekt- und Array-Manipulationsfunktionen von JavaScript nutzen. Hier ist eine Schritt-für-Schritt-Lösung:
Erstellen Sie zunächst ein leeres JavaScript-Objekt namens „holder“, das als Container zum Speichern summierter Werte für jeden „Namen“ dient.
Verwenden Sie eine „forEach“-Schleife, um über jedes Objekt im Eingabearray („objects“) zu iterieren.
Überprüfen Sie innerhalb der Schleife, ob die „name“-Eigenschaft des aktuellen Objekts bereits als Eigenschaft im „holder“-Objekt vorhanden ist, indem Sie „hasOwnProperty(d.name)“ verwenden.
Wenn die Eigenschaft „name“ vorhanden ist, fügen Sie die Eigenschaft „value“ des aktuellen Objekts zur entsprechenden Eigenschaft in „holder“ hinzu (z. B. „holder[d.name] = d.value). '). Wenn die Eigenschaft „name“ nicht gefunden wird, initialisieren Sie sie mit der Eigenschaft „value“ des aktuellen Objekts („holder[d.name] = d.value“).
Sobald alle Werte summiert wurden, erstellen Sie ein neues leeres Array mit dem Namen „obj2“, um die zusammengeführten Objekte zu speichern.
Verwenden Sie eine weitere Schleife, um über die Eigenschaften des „Halter“-Objekts zu iterieren („for (var prop in holder)“). Erstellen Sie für jede Eigenschaft ein neues Objekt mit den Eigenschaften „Name“ und „Wert“ und verschieben Sie es in „obj2“.
Zum Schluss protokollieren Sie das Array „obj2“ in der Konsole, um die zusammengeführten Objekte mit summierten „Wert“-Eigenschaften anzuzeigen.
Hier ist ein Codeausschnitt Das zeigt die Lösung:
const objects = [ { name: 'P1', value: 150 }, { name: 'P1', value: 150 }, { name: 'P2', value: 200 }, { name: 'P3', value: 450 }, ]; const holder = {}; objects.forEach(d => { if (holder.hasOwnProperty(d.name)) { holder[d.name] += d.value; } else { holder[d.name] = d.value; } }); const obj2 = []; for (var prop in holder) { obj2.push({ name: prop, value: holder[prop] }); } console.log(obj2);
Indem Sie diese Schritte befolgen, können Sie mit ähnlichen Schlüsseln verknüpfte Werte effektiv gruppieren und summieren in einem Array von Objekten, wodurch ein neues Array mit geänderten Objekten gemäß der gewünschten Ausgabe erstellt wird.
Das obige ist der detaillierte Inhalt vonWie füge ich doppelte Schlüssel zusammen und summiere ihre Werte in einem JavaScript-Objektarray?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!