Maison > interface Web > js tutoriel > Comment additionner efficacement les valeurs des clés en double dans un tableau d'objets JavaScript ?

Comment additionner efficacement les valeurs des clés en double dans un tableau d'objets JavaScript ?

Susan Sarandon
Libérer: 2024-12-20 01:32:09
original
1008 Les gens l'ont consulté

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

Somme des valeurs de clés en double dans un tableau d'objets

En JavaScript, lorsqu'on traite un tableau d'objets, on peut rencontrer le besoin pour fusionner les clés en double et additionner leurs valeurs associées. Étant donné un tableau d'objets comme :

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
]
Copier après la connexion

On viserait à atteindre ce qui suit :

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}
]
Copier après la connexion

Au lieu d'itérer et de pousser des valeurs, une approche plus efficace utilise Map et Reduction :

let counts = objArr.reduce((prev, curr) => {
  let count = prev.get(curr.key) || 0;
  prev.set(curr.key, curr.val + count);
  return prev;
}, new Map());
Copier après la connexion

Cela crée une carte avec des clés comme clés d'objet et des valeurs comme valeurs additionnées. Enfin, la carte est reconvertie en tableau avec :

let reducedObjArr = [...counts].map(([_, value]) => {
  return {key, value}
})
Copier après la connexion

Cette approche est plus concise et élimine le risque d'erreurs associé à l'itération manuelle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal