Heim > Web-Frontend > js-Tutorial > Wie summiere ich Werte doppelter Schlüssel in einem JavaScript-Objektarray?

Wie summiere ich Werte doppelter Schlüssel in einem JavaScript-Objektarray?

Linda Hamilton
Freigeben: 2024-12-17 07:41:24
Original
431 Leute haben es durchsucht

How to Sum Values of Duplicate Keys in a JavaScript Array of Objects?

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:&quot;Mon Sep 23 2013 00:00:00 GMT-0400&quot;, val:54} // <- duplicate key
]
Nach dem Login kopieren

Unser Ziel ist es, ein Array mit eindeutigen Schlüsseln und summierten Werten zu erhalten, z Dies:

reducedObjArr = [
    {key:&quot;Mon Sep 23 2013 00:00:00 GMT-0400&quot;, val:96},
    {key:&quot;Mon Sep 24 2013 00:00:00 GMT-0400&quot;, val:78},
    {key:&quot;Mon Sep 25 2013 00:00:00 GMT-0400&quot;, val:23}
]
Nach dem Login kopieren

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); 
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage