javascript

Promedio de valores de un arreglo usando reduce en Javascript

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.

Sumatoria con números

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:

  • El primero, una función anónima que recibirá a su vez acumulador y siguienteValor. acumulador es el acumulador, que la primera vez tendrá el valor del primer elemento, o el valor que establezcamos por defecto (ver segundo argumento). Tomando como ejemplo el array de arriba, primero se llamará con acumulador=4 y siguienteValor=2, después con acumulador=6 (4 + 2) y siguienteValor=5, y así sucesivamente.
  • El segundo, un valor por defecto. Debido a que en algún momento el arreglo puede estar vacío, se necesita un valor por default. Ya que se llamará a la función anónima con acumulador y siguienteValor, pero, como no hay elementos, ambos serán indefinidos y no se podrán sumar. Por esto es que indicamos el valor por defecto.

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;

Sumatoria con objetos

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

  • 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

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

7 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

1 semana hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

2 semanas hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

3 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

3 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.