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);