Si tenemos un arreglo con números dentro de él y queremos calcular el promedio de dichos valores podemos usar algo así:
var suma = 0; for(var x = 0; x < arreglo.length; x++){ suma += arreglo[x]; } var promedio = suma / arreglo.length;
Lo que hoy explicaré es una función de los arreglos en dicho lenguaje llamada reduce, dicho procedimiento no necesita ningún ciclo for y es un poco más elegante.
Con esto, podemos sacar la sumatoria de la siguiente manera:
var arreglo = [4,2,5,6,77,844,432]; //Con este arreglo trabajaremos var sumatoria = arreglo.reduce(function(acumulador, siguienteValor){ return acumulador + siguienteValor; }, 0);
Simplemente invocamos a la función reduce y le pasamos dos argumentos:
Una vez que tengamos la sumatoria, podemos calcular el promedio dividiéndola entre el número de elementos:
var arreglo = [4,2,5,6,77,844,432]; //Con este arreglo trabajaremos var sumatoria = arreglo.reduce(function(a, b){ return a + b; //Regresa el acumulador más el siguiente }, 0); //Pero si no encuentras nada o no hay siguiente, regresa 0 var promedio = sumatoria / arreglo.length;
Igualmente podemos calcular la sumatoria si nuestro array contiene objetos. Veamos un ejemplo en donde sumaremos la edad de algunas personas. Como podemos ver, este arreglo ahora tiene personas (objetos) en vez de simples números.
var arreglo = [ { nombre: "John Doe", edad: 50 }, { nombre: "Pedro", edad: 20 }, { nombre: "Juanita", edad: 22 } ];
Definido el arreglo de arriba, para sacar la sumatoria sería:
var sumatoriaObjeto = arreglo.reduce(function(acumulador, siguienteValor){ return { edad: acumulador.edad + siguienteValor.edad }; }, {edad: 0}); //Si no hay nada, regresamos un objeto con edad = 0. No hay necesidad de devolver el nombre, pues no es necesario
Noten por favor que ahora devolvemos un objeto que lleva la clave edad, cuyo valor es la suma de los otros dos objetos.
Eso devolverá, al terminar la función, algo como {edad: 92}. Para tener ahora sí el verdadero número debemos acceder a sumatoriaObjeto.edad y ese valor dividirlo entre el número de personas, así:
var sumatoriaObjeto = arreglo.reduce(function(acumulador, siguienteValor){ return { edad: acumulador.edad + siguienteValor.edad }; }, {edad: 0}); //Si no hay nada, regresamos un objeto con edad = 0. No hay necesidad de devolver el nombre, pues no es necesario var promedioEdad = sumatoriaObjeto.edad / arreglo.length;
Y así es como podemos sacar promedios y sumatorias en Javascript usando reduce, de una forma elegante.
El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…
Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…
En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta web usa cookies.
Ver comentarios
gracias,muy simple y claro
Si fue de su agrado, le invito a compartirlo
Saludos :)
Muy buen post, simple y aclarador.
Estuve practicando y escribi mi propia version del promedio
arr = [4,2,5,6,77,844,432]
prom = arr.reduce((acumulator,next,index) => {
return ( index – 1 == 0 ) ? (acumulator + next)/arr.length : acumulator + next/arr.length
})
console.log (prom) //195.71428571428572