Maison > interface Web > js tutoriel > Comment fusionner efficacement des objets JavaScript avec des clés correspondantes et additionner leurs valeurs ?

Comment fusionner efficacement des objets JavaScript avec des clés correspondantes et additionner leurs valeurs ?

Linda Hamilton
Libérer: 2024-12-08 05:51:09
original
330 Les gens l'ont consulté

How to Efficiently Merge JavaScript Objects with Matching Keys and Sum Their Values?

Fusionner des objets avec des propriétés correspondantes dans des tableaux JavaScript

Considérez le tableau d'objets suivant :

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

Notre objectif est de fusionner les clés en double et additionner leurs valeurs respectives, ce qui donne :

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

Bien qu'une première tentative puisse impliquer une itération et une poussée valeurs, une approche plus efficace consiste à exploiter les fonctions intégrées de JavaScript :

// Use a Map to count values with the same key
const counts = objArr.reduce((prev, curr) => {
  let count = prev.get(curr.key) || 0;
  prev.set(curr.key, curr.val + count);
  return prev;
}, new Map());

// Convert the Map back to an array of objects
const reducedObjArr = [...counts].map(([key, value]) => {
  return {key, value};
});
Copier après la connexion

Cette méthode réduit le tableau à une carte où les clés représentent les valeurs de clé en double et les valeurs représentent leurs sommes. La carte est ensuite reconvertie en un tableau d'objets pour plus de lisibilité.

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