Problème :
Étant donné un tableau d'objets, déterminez un méthode pour calculer la somme (ou d'autres opérations mathématiques) des valeurs associées à des objets qui partagent les mêmes key.
Exemple :
Considérez le tableau d'objets suivant :
[ { 'name': 'P1', 'value': 150 }, { 'name': 'P1', 'value': 150 }, { 'name': 'P2', 'value': 200 }, { 'name': 'P3', 'value': 450 } ]
La sortie souhaitée additionnerait la propriété « valeur » pour les objets avec les propriétés 'name' correspondantes, ce qui donne dans :
[ { 'name': 'P1', 'value': 300 }, { 'name': 'P2', 'value': 200 }, { 'name': 'P3', 'value': 450 } ]
Solution :
La solution consiste à parcourir le tableau d'entrée, en agrégeant les valeurs de clé identiques dans un objet distinct.
var obj = [ { 'name': 'P1', 'value': 150 }, { 'name': 'P1', 'value': 150 }, { 'name': 'P2', 'value': 200 }, { 'name': 'P3', 'value': 450 } ]; var holder = {}; obj.forEach(function(d) { if (holder.hasOwnProperty(d.name)) { holder[d.name] = holder[d.name] + d.value; } else { holder[d.name] = d.value; } });
L'objet titulaire résultant contiendra des paires clé-valeur où les clés sont des valeurs de nom uniques et les valeurs sont la somme des valeurs associées. propriétés.
{ 'P1': 300, 'P2': 200, 'P3': 450 }
Pour générer le résultat souhaité, parcourez les propriétés de l'objet titulaire et créez de nouveaux objets :
var obj2 = []; for (var prop in holder) { obj2.push({ name: prop, value: holder[prop] }); }
Le résultat final, stocké dans obj2, remplit les exigences de additionner les valeurs pour les objets avec des clés similaires.
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!