143 votes

Comment additionner les valeurs d'un objet JavaScript ?

Je voudrais faire la somme des valeurs d'un objet.

J'ai l'habitude de python où ce serait juste :

sample = { 'a': 1 , 'b': 2 , 'c':3 };
summed =  sum(sample.itervalues())     

Le code suivant fonctionne, mais c'est beaucoup de code :

function obj_values(object) {
  var results = [];
  for (var property in object)
    results.push(object[property]);
  return results;
}

function list_sum( list ){
  return list.reduce(function(previousValue, currentValue, index, array){
      return previousValue + currentValue;
  });
}

function object_values_sum( obj ){
  return list_sum(obj_values(obj));
}

var sample = { a: 1 , b: 2 , c:3 };
var summed =  list_sum(obj_values(a));
var summed =  object_values_sum(a)

Est-ce que j'ai raté quelque chose d'évident, ou est-ce que c'est juste comme ça ?

0voto

Olu Adabonyan Points 95

Je suis tombé sur cette solution de @jbabey en essayant de résoudre un problème similaire. Avec une petite modification, j'ai réussi à l'obtenir. Dans mon cas, les clés des objets sont des nombres (489) et des chaînes de caractères ("489"). Donc pour résoudre ce problème, chaque clé est analysée. Le code suivant fonctionne :

var array = {"nR": 22, "nH": 7, "totB": "2761", "nSR": 16, "htRb": "91981"}
var parskey = 0;
for (var key in array) {
    parskey = parseInt(array[key]);
    sum += parskey;
};
return(sum);

0voto

Damian Green Points 1654

A ramda Une seule ligne :

import {
 compose, 
 sum,
 values,
} from 'ramda'

export const sumValues = compose(sum, values);

Utilisez : const summed = sumValues({ 'a': 1 , 'b': 2 , 'c':3 });

0voto

sachin Points 11

Nous pouvons itérer l'objet en utilisant sur et peut effectuer toute opération arithmétique.

// input
const sample = {
    'a': 1,
    'b': 2,
    'c': 3
};

// var
let sum = 0;

// object iteration
for (key in sample) {
    //sum
    sum += (+sample[key]);
}
// result
console.log("sum:=>", sum);

0voto

Alex Irabor Points 343

Une solution simple serait d'utiliser la boucle for..in pour trouver la somme.

function findSum(obj){
  let sum = 0;
  for(property in obj){
    sum += obj[property];
  }
  return sum;
}

var sample = { a: 1 , b: 2 , c:3 };
console.log(findSum(sample));

0voto

Dhrupad Patel Points 21

function myFunction(a) { return Object.values(a).reduce((sum, cur) => sum + cur, 0); }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X