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 unfor...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.