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 ]
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} ]
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}; });
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!