Maison >interface Web >js tutoriel >Comment additionner les valeurs de propriétés d'objet avec des clés partagées en JavaScript ?

Comment additionner les valeurs de propriétés d'objet avec des clés partagées en JavaScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-14 17:18:18255parcourir

How to Sum Object Property Values with Shared Keys in JavaScript?

Somme des valeurs de propriétés d'objet avec des clés partagées en JavaScript

Considérez le tableau d'objets JavaScript suivant :

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
];

Le but est de fusionner les clés en double en additionnant leurs valeurs val correspondantes, ce qui donne un tableau comme ceci :

const 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},
];

Pour y parvenir, une solution robuste employant les méthodes de réduction et de mappage peut être utilisée :

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

let reducedObjArr = [...counts].map(([key, value]) => {
  return {key, value};
});

Cette approche crée d'abord une carte en utilisant réduire, où chaque clé représente une clé unique du tableau d'origine et la valeur correspondante est la somme de toutes les valeurs val avec la même clé.

Enfin, la méthode map est invoquée sur la carte des comptes pour la convertir dans un tableau d'objets avec les valeurs fusionnées souhaitées. La sortie de ce code est le réduitObjArr, qui contient les valeurs fusionnées et additionnées selon les besoins.

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!

Déclaration:
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