Gruppieren von Objekten nach mehreren Eigenschaften und Aggregieren ihrer Werte
Das Gruppieren von Elementen in einem Array nach mehreren Eigenschaften ist für die Datenorganisation und -zusammenfassung von entscheidender Bedeutung. Um die spezifische Anforderung zu erfüllen, Objekte nach Form und Farbe zu gruppieren und ihre Werte zu aggregieren, können wir die Leistungsfähigkeit der integrierten Methoden von JavaScript nutzen.
Schritt 1: Array#reduce
Die Array#reduce-Methode bietet eine präzise und effiziente Möglichkeit, über ein Array zu iterieren und dabei eine einzelne Ausgabe der einzelnen Elemente zu akkumulieren. In diesem Fall können wir damit Objekte basierend auf ihren kombinierten Form- und Farbeigenschaften akkumulieren.
Schritt 2: Hilfsobjekt
Wir verwenden ein Hilfsobjekt zum Verfolgen einzigartige Kombinationen aus Form und Farbe. Für jedes Objekt im Array prüfen wir, ob die Kombination im Hilfsprogramm vorhanden ist, indem wir die Form- und Farbeigenschaften verketten. Wenn es nicht existiert, erstellen wir einen neuen Eintrag im Hilfsobjekt und verschieben gleichzeitig eine Kopie des aktuellen Objekts in das Ergebnisarray.
Schritt 3: Wertaggregation
Wenn eine ähnliche Kombination bereits im Hilfsobjekt vorhanden ist, erhöhen wir einfach die Werte „used“ und „instances“ des entsprechenden Eintrags und aggregieren so effektiv die Werte aus dem aktuellen Objekt.
Schritt 4: Objekt kopieren
Um eine Änderung der ursprünglichen Objekte im Array zu vermeiden, erstellen wir eine Kopie mit Object.assign. Dadurch wird sichergestellt, dass das Hilfsobjekt unabhängige Kopien der Objekte enthält, sodass wir Werte separat aggregieren können.
Implementierung:
const arr = [ { shape: 'square', color: 'red', used: 1, instances: 1 }, { shape: 'square', color: 'red', used: 2, instances: 1 }, { shape: 'circle', color: 'blue', used: 0, instances: 0 }, { shape: 'square', color: 'blue', used: 4, instances: 4 }, { shape: 'circle', color: 'red', used: 1, instances: 1 }, { shape: 'circle', color: 'red', used: 1, instances: 0 }, { shape: 'square', color: 'blue', used: 4, instances: 5 }, { shape: 'square', color: 'red', used: 2, instances: 1 }, ]; const helper = {}; const result = arr.reduce((r, o) => { const key = o.shape + '-' + o.color; if (!helper[key]) { helper[key] = Object.assign({}, o); // create a copy of o r.push(helper[key]); } else { helper[key].used += o.used; helper[key].instances += o.instances; } return r; }, []); console.log(result);
Ausgabe:
[ { shape: 'square', color: 'red', used: 5, instances: 3 }, { shape: 'circle', color: 'red', used: 2, instances: 1 }, { shape: 'square', color: 'blue', used: 11, instances: 9 }, { shape: 'circle', color: 'blue', used: 0, instances: 0 } ]
Diese Lösung fasst Objekte effektiv nach Form und Farbe zusammen und liefert so eine zusammenhängende Zusammenfassung der Daten.
Das obige ist der detaillierte Inhalt vonWie gruppiere ich Objekte nach mehreren Eigenschaften und aggregiere ihre Werte in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!