Maison >interface Web >js tutoriel >Comment additionner efficacement les valeurs des clés en double dans un tableau d'objets JavaScript ?
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 ]
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} ]
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());
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} })
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!