Saltar al contenido

¿Cómo sumar los valores de un objeto JavaScript?

Este grupo de expertos pasados muchos días de investigación y de juntar de información, hallamos la respuesta, esperamos que resulte útil para ti para tu proyecto.

Solución:

Puede ser tan simple como eso:

const sumValues = obj => Object.values(obj).reduce((a, b) => a + b);

Citando a MDN:

los Object.values() método devuelve un array de los valores de propiedad enumerables propios de un objeto dado, en el mismo orden que el proporcionado por un for...in bucle (la diferencia es que un bucle for-in también enumera las propiedades en la cadena prototipo).

de Object.values() en MDN

los reduce() método aplica una función contra un acumulador y cada valor de la array (de izquierda a derecha) para reducirlo a un solo valor.

de Array.prototype.reduce() en MDN

Puedes usar esta función así:

sumValues(a: 4, b: 6, c: -5, d: 0); // gives 5

Tenga en cuenta que este código utiliza algunas funciones de ECMAScript que no son compatibles con algunos navegadores antiguos (como IE). Es posible que necesite usar Babel para compilar su código.

Podrías ponerlo todo en una función:

function sum( obj ) 
  var sum = 0;
  for( var el in obj ) 
    if( obj.hasOwnProperty( el ) ) 
      sum += parseFloat( obj[el] );
    
  
  return sum;

    
var sample =  a: 1 , b: 2 , c:3 ;
var summed = sum( sample );
console.log( "sum: "+summed );


Por diversión, aquí hay otra implementación usando Object.keys() y Array.reduce() (la compatibilidad con el navegador ya no debería ser un gran problema):

function sum(obj) 
  return Object.keys(obj).reduce((sum,key)=>sum+parseFloat(obj[key]
let sample =  a: 1 , b: 2 , c:3 ;

console.log(`sum:$sum(sample)`);

Pero esto parece ser mucho más lento: jsperf.com

Si está usando lodash, puede hacer algo como

_.sum(_.values( 'a': 1 , 'b': 2 , 'c':3 )) 

Puntuaciones y reseñas

Te invitamos a confirmar nuestro quehacer exponiendo un comentario o puntuándolo te estamos eternamente agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *