"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment fusionner efficacement les objets JavaScript avec des clés correspondant et résumer leurs valeurs?

Comment fusionner efficacement les objets JavaScript avec des clés correspondant et résumer leurs valeurs?

Publié le 2025-03-22
Parcourir:582

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

Fusion d'objets avec des propriétés correspondantes dans les tableaux javascript

considérer le tableau suivant d'objets:

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}, //  

Notre objectif est de fusionner les touches en double et de résumer leurs valeurs respectives, résultant en:

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

Bien qu'une tentative initiale puisse impliquer d'itérer et de pousser des valeurs, une approche plus efficace consiste à tirer parti des 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};
});

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

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3