Maison >interface Web >js tutoriel >Comment additionner les valeurs de clés identiques dans un tableau d'objets JavaScript ?

Comment additionner les valeurs de clés identiques dans un tableau d'objets JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-26 13:03:10716parcourir

How to Sum Values of Identical Keys in an Array of JavaScript Objects?

Somme des valeurs de clés similaires dans un tableau d'objets

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn