En JavaScript los arrays disponen de una serie de métodos funcionales que nos permiten realizar operaciones en arrays de manera declarativa.
En general, estos métodos funcionales facilitan la legibilidad del código (y con esto tenemos menor posibilidad de error, y mejor mantenimiento del código)*
A diferencia de los métodos imperativos, que modifican los Arrays en su lugar, los métodos funcionales crean y devuelven nuevos Arrays, preservando la inmutabilidad.
Estos métodos son:
Método | Descripción |
---|---|
map() | Crea un nuevo array con los resultados de aplicar una función a cada elemento. |
filter() | Crea un nuevo array con los elementos que cumplan una condición. |
reduce() | Aplica una función acumuladora sobre los elementos del array. |
reduceRight() | Aplica una función acumuladora de derecha a izquierda. |
some() | Comprueba si al menos un elemento cumple con una condición. |
every() | Comprueba si todos los elementos cumplen con una condición. |
Vamos a ver cada uno en detalle 👇.
Métodos funcionales para arrays
Método map()
El método map()
crea un nuevo array con los resultados de aplicar una función a cada elemento del array original. Este método no modifica el array original.
const numeros = [1, 2, 3, 4];
const cuadrados = numeros.map(num => num ** 2);
console.log(cuadrados); // [1, 4, 9, 16]
En este ejemplo, map()
toma cada número del array numeros
, lo eleva al cuadrado y devuelve un nuevo array con los resultados.
const usuarios = [
{ nombre: 'Juan', edad: 25 },
{ nombre: 'Ana', edad: 30 }
];
const nombres = usuarios.map(usuario => usuario.nombre);
console.log(nombres); // ['Juan', 'Ana']
Aquí, map()
extrae los nombres de los objetos de usuario y los coloca en un nuevo array.
Método filter()
El método filter()
crea un nuevo array con todos los elementos que pasan una prueba implementada por una función proporcionada. Al igual que map()
, filter()
no modifica el array original.
const numeros = [1, 2, 3, 4, 5];
const mayoresDeTres = numeros.filter(num => num > 3);
console.log(mayoresDeTres); // [4, 5]
Este ejemplo filtra los números mayores que tres y devuelve un nuevo array con los valores que cumplen con la condición.
const usuarios = [
{ nombre: 'Juan', edad: 25 },
{ nombre: 'Ana', edad: 30 },
{ nombre: 'Luis', edad: 19 }
];
const mayoresDeEdad = usuarios.filter(usuario => usuario.edad >= 18);
console.log(mayoresDeEdad); // [{ nombre: 'Juan', edad: 25 }, { nombre: 'Ana', edad: 30 }]
En este caso, filter()
selecciona los usuarios que son mayores de edad.
Método reduce()
El método reduce()
aplica una función contra un acumulador y cada elemento del array (de izquierda a derecha) para reducirlo a un solo valor. Es especialmente útil para operaciones como la suma o la concatenación de valores.
const numeros = [1, 2, 3, 4];
const suma = numeros.reduce((acumulador, num) => acumulador + num, 0);
console.log(suma); // 10
Aquí, reduce()
suma todos los números del array y devuelve el resultado total.
const ventas = [
{ producto: 'A', cantidad: 10 },
{ producto: 'B', cantidad: 20 },
{ producto: 'C', cantidad: 15 }
];
const totalVentas = ventas.reduce((acumulador, venta) => acumulador + venta.cantidad, 0);
console.log(totalVentas); // 45
En este ejemplo, reduce()
calcula la cantidad total de ventas.
El médoto reduceRight()
actua exactamente igual de que reduce()
, pero empezando de derecha a izquierda.
Método some()
El método some()
verifica si al menos un elemento en el array cumple con la condición proporcionada. Devuelve true
si al menos un elemento pasa la prueba y false
si ninguno lo hace.
const numeros = [1, 2, 3, 4];
const hayMenoresDeDos = numeros.some(num => num < 2);
console.log(hayMenoresDeDos); // true
En este ejemplo, some()
devuelve true
porque al menos un número en el array (el 1
) es menor que 2.
const usuarios = [
{ nombre: 'Juan', edad: 25 },
{ nombre: 'Ana', edad: 30 },
{ nombre: 'Luis', edad: 19 }
];
const hayMayoresDeEdad = usuarios.some(usuario => usuario.edad >= 18);
console.log(hayMayoresDeEdad); // true
Aquí, some()
devuelve true
porque al menos un usuario tiene una edad mayor o igual a 18.
Método every()
El método every()
verifica si todos los elementos en el array cumplen con la condición proporcionada. Devuelve true
si todos los elementos pasan la prueba y false
si al menos uno no lo hace.
const numeros = [1, 2, 3, 4];
const todosSonMayoresDeCero = numeros.every(num => num > 0);
console.log(todosSonMayoresDeCero); // true
En este ejemplo, every()
devuelve true
porque todos los números del array son mayores que 0.
const usuarios = [
{ nombre: 'Juan', edad: 25 },
{ nombre: 'Ana', edad: 30 },
{ nombre: 'Luis', edad: 19 }
];
const todosSonMayoresDeEdad = usuarios.every(usuario => usuario.edad >= 18);
console.log(todosSonMayoresDeEdad); // true
En este caso, every()
devuelve true
porque todos los usuarios tienen una edad mayor o igual a 18.