Heim >Web-Frontend >js-Tutorial >Wie kann ich Objekte in einem Array effizient nach mehreren Eigenschaften gruppieren und aggregieren?
Effizientes Gruppieren und Aggregieren von Objekten in einem Array nach mehreren Eigenschaften
In diesem Artikel befassen wir uns mit einer wichtigen Aufgabe: dem Gruppieren von Objekten innerhalb eines Arrays durch mehrere Eigenschaften und die Aggregation ihrer Werte.
Die Herausforderung
Das Gruppieren von Objekten in Arrays basierend auf mehreren Kriterien kann ein verwirrendes Problem sein. Während vorhandene Lösungen Objekte nach mehreren Schlüsseln gruppieren können, gelingt es ihnen oft nicht, Duplikate effektiv zu kombinieren und zu entfernen. Unser Ziel ist es, eine Lösung zu schaffen, die Objekte nahtlos nach Form und Farbe gruppiert, ihre jeweiligen „verwendeten“ und „Instanzen“-Werte summiert und Duplikate eliminiert.
Die Lösung
Unser Ansatz nutzt die Methode array.reduce() in Verbindung mit einem Hilfsobjekt. Für jedes Objekt im Array erstellen wir einen eindeutigen Schlüssel, indem wir seine Form und Farbe verketten. Anschließend prüfen wir, ob dieser Schlüssel in unserem Hilfsobjekt vorhanden ist:
Indem wir ein Hilfsobjekt verwenden, um eindeutige Kombinationen von Form und Farbe zu verfolgen, gruppieren und aggregieren wir Objekte effektiv und eliminieren gleichzeitig Duplikate.
var 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} ]; var helper = {}; var result = arr.reduce(function(r, o) { var 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);
Die Ausgabe
Durch die Implementierung dieser Lösung erhalten wir das Gewünschte Ergebnis:
[{"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}]
Dadurch werden Objekte effektiv nach Form und Farbe gruppiert, ihre Werte zusammengefasst und Duplikate entfernt.
Das obige ist der detaillierte Inhalt vonWie kann ich Objekte in einem Array effizient nach mehreren Eigenschaften gruppieren und aggregieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!