Maison > interface Web > js tutoriel > Comment additionner efficacement les valeurs de clés similaires dans des objets JavaScript ?

Comment additionner efficacement les valeurs de clés similaires dans des objets JavaScript ?

Barbara Streisand
Libérer: 2024-11-23 04:17:13
original
182 Les gens l'ont consulté

How to Efficiently Sum Values of Similar Keys in JavaScript Objects?

Somme des valeurs de clés d'objets similaires

Étant donné un tableau d'objets JavaScript, comment pouvez-vous additionner efficacement les valeurs associées à des clés similaires ?

Approche

Pour y parvenir, nous pouvons utiliser les éléments suivants étapes :

  1. Créer un objet Holder : Parcourez le tableau d'origine et remplissez un objet, titulaire, avec les propriétés du nom comme clés. Pour chaque clé, initialisez la valeur à la valeur correspondante ou ajoutez la valeur à la valeur existante si la clé existe déjà.
  2. Construire un nouveau tableau : Une fois que vous avez l'objet titulaire, créez un nouveau tableau, obj2, en itérant sur ses propriétés. Pour chaque propriété, créez un objet avec le nom clé et la somme des valeurs comme valeur.

Exemple

Considérez l'exemple de tableau :

var obj = [
  { 'name': 'P1', 'value': 150 },
  { 'name': 'P1', 'value': 150 },
  { 'name': 'P2', 'value': 200 },
  { 'name': 'P3', 'value': 450 }
];
Copier après la connexion

Application de l'approche ci-dessus :

// Create a holder object to sum values for similar names
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;
  }
});

// Populate a new array with the summed values
var obj2 = [];
for (var prop in holder) {
  obj2.push({ name: prop, value: holder[prop] });
}

// Output the result
console.log(obj2);
Copier après la connexion

Résultat attendu :

[
  { 'name': 'P1', 'value': 300 },
  { 'name': 'P2', 'value': 200 },
  { 'name': 'P3', 'value': 450 }
]
Copier après la connexion

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