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!