DevPath · Aprende a programar ESPTEN

Programación funcional

Funciones de orden superior y map/filter/reduce

Funciones de orden superior

Una función de orden superior es la que recibe una función como argumento o devuelve una función. En JavaScript las funciones son "valores de primera clase": se pueden pasar y devolver como cualquier dato.

Los tres pilares de la programación funcional con arrays son funciones de orden superior:

map: transformar cada elemento

const numeros = [1, 2, 3];
const dobles = numeros.map((n) => n * 2); // [2, 4, 6]

filter: quedarse con algunos

const pares = numeros.filter((n) => n % 2 === 0); // [2]

reduce: combinar todo en un valor

const suma = numeros.reduce((acumulado, n) => acumulado + n, 0); // 6

reduce recibe un acumulador y cada elemento, y devuelve el nuevo acumulador. El segundo argumento (0) es el valor inicial. Es la más potente: con reduce se pueden expresar map y filter.

Estas funciones no mutan el array original: devuelven uno nuevo, lo que encaja con la inmutabilidad.

Ejemplos

Encadenar map, filter y reduce

const numeros = [1, 2, 3, 4, 5, 6];
const resultado = numeros
  .filter((n) => n % 2 === 0) // [2, 4, 6]
  .map((n) => n * n)          // [4, 16, 36]
  .reduce((a, n) => a + n, 0); // 56
console.log(resultado);
Pon esto en práctica

DevPath es un curso práctico: aquí lees la teoría; en la app la pones en práctica con ejercicios que se ejecutan de verdad, sin conexión.

Empezar gratis en la app →
← Funciones puras e inmutabilidadComposición y currying →