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
Libérer: 2024-11-26 13:03:10
original
707 Les gens l'ont consulté

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
    }
]
Copier après la connexion

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
    }
]
Copier après la connexion

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;
  }
});
Copier après la connexion

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
}
Copier après la connexion

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] });
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal