kombinieren gleichschließende Eigenschaftenwerte in einem Array von Objekten
gegebenen Doppelte Schlüssel, indem Sie ihre entsprechenden Werte summieren?
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 einzigartigen Schlüsseln und zusammenfassten Werten wie folgt zu erhalten:
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 unter Verwendung von Karte und Reduzierung
anstatt zu iterieren und Werte zu pushen = [ {Schlüssel: 'Mon 23. September 2013 00:00:00 GMT-0400', VAL: 42}, {Key: 'Mon Sep 24. September 2013 00:00:00 GMT-0400', VAL: 78}, {Key: 'Mon Sep 25. September 2013 00:00:00 GMT-0400', VAL: 23}, {Schlüssel: 'Mon 23. September 2013 00:00:00 GMT-0400', VAL: 54} // & lt;- Duplicate Key ]; // Daten in eine Karte mit Reduzierung konvertieren const zählt = objarr.Reduce ((prev, curr) = & gt; { const count = prev.get (Curr.Key) || 0; PREV.SET (Curr.Key, Curr.val Count); return prev; }, new map ()); // Die Karte zählt das Objekt zurück in ein Array const recordObjarr = [... zählt] .Map (([Schlüssel, Wert]) = & gt; {{{ Rückgabe {Schlüssel, Wert} }); console.log (rectedObjarr);
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);
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3