Kombinieren gleichschlüsseliger Eigenschaftswerte in einem Array von Objekten
Wie können wir bei einem Array von JavaScript-Objekten wie dem folgenden kombinieren? Schlüssel duplizieren, indem ihre entsprechenden Werte summiert werden?
objArr = [ {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:42}, {key:"Mon Sep 24 2013 00:00:00 GMT-0400", val:78}, {key:"Mon Sep 25 2013 00:00:00 GMT-0400", val:23}, {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:54} // <- duplicate key ]
Unser Ziel ist es, ein Array mit eindeutigen Schlüsseln und summierten Werten zu erhalten, z Dies:
reducedObjArr = [ {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:96}, {key:"Mon Sep 24 2013 00:00:00 GMT-0400", val:78}, {key:"Mon Sep 25 2013 00:00:00 GMT-0400", val:23} ]
Lösung mit Map and Reduce
Anstatt Werte zu iterieren und zu pushen, können wir die leistungsstarke Kombination aus Map und Reduce nutzen:
const objArr = [ {key: 'Mon Sep 23 2013 00:00:00 GMT-0400', val: 42}, {key: 'Mon Sep 24 2013 00:00:00 GMT-0400', val: 78}, {key: 'Mon Sep 25 2013 00:00:00 GMT-0400', val: 23}, {key: 'Mon Sep 23 2013 00:00:00 GMT-0400', val: 54} // <- duplicate key ]; // Convert data into a Map with reduce const counts = objArr.reduce((prev, curr) => { const count = prev.get(curr.key) || 0; prev.set(curr.key, curr.val + count); return prev; }, new Map()); // Map counts object back to an array const reducedObjArr = [...counts].map(([key, value]) => { return {key, value} }); console.log(reducedObjArr);
Dieser Ansatz aggregiert und kombiniert effektiv Werte mit denselben Schlüsseln, was zu dem gewünschten reduzierten Array führt.
Das obige ist der detaillierte Inhalt vonWie summiere ich Werte doppelter Schlüssel in einem JavaScript-Objektarray?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!