DevHub Global Solutions | Educativo

Array methods: map, filter, reduce explicados

Domina los métodos más poderosos para manipulación de arrays en JavaScript: map, filter y reduce. Esta guía completa explica cada método con ejemplos prácticos y casos de uso reales para transformar, filtrar y reducir datos eficientemente.
Array methods: map, filter, reduce explicados
Diagrama visual de map, filter y reduce trabajando sobre un array

Array.map(): Transformación de datos

Crea un nuevo array transformando cada elemento:

Inmutable

Devuelve nuevo array sin modificar original

Transformación

Aplica función a cada elemento

Misma longitud

Mantiene el mismo número de elementos

// Transformar array de números
const numeros = [1, 2, 3, 4];
const cuadrados = numeros.map(n => n * n);
// [1, 4, 9, 16]

// Transformar array de objetos
const productos = [
  { id: 1, nombre: 'Camiseta', precio: 20 },
  { id: 2, nombre: 'Pantalón', precio: 35 }
];

const nombres = productos.map(p => p.nombre);
// ['Camiseta', 'Pantalón']

map() es ideal para transformar datos de API a formato requerido por UI

Array.filter(): Filtrado de elementos

Crea nuevo array con elementos que pasan un test:

// Filtrar números mayores a 10
const valores = [5, 12, 8, 15, 3];
const mayores = valores.filter(n => n > 10);
// [12, 15]

// Filtrar productos en stock
const productos = [
  { id: 1, nombre: 'Camiseta', stock: 10 },
  { id: 2, nombre: 'Pantalón', stock: 0 }
];

const disponibles = productos.filter(p => p.stock > 0);
// [{ id: 1, nombre: 'Camiseta', stock: 10 }]

Array.reduce(): Reducción a valor único

Reduce array a un único valor mediante función acumuladora:

// Sumar todos los valores
const numeros = [1, 2, 3, 4];
const suma = numeros.reduce((acum, actual) => acum + actual, 0);
// 10

// Contar ocurrencias
const palabras = ['manzana', 'banana', 'manzana', 'naranja'];
const conteo = palabras.reduce((acc, palabra) => {
  acc[palabra] = (acc[palabra] || 0) + 1;
  return acc;
}, {});
// { manzana: 2, banana: 1, naranja: 1 }

// Aplanar arrays anidados
const arrays = [[1, 2], [3, 4], [5, 6]];
const plano = arrays.reduce((acc, arr) => [...acc, ...arr], []);
// [1, 2, 3, 4, 5, 6]
Parámetro Descripción
acumulador Valor acumulado en cada iteración
valorActual Elemento actual del array
índice (opcional) Índice del elemento actual
array (opcional) Array original
valorInicial Valor inicial del acumulador

Combinando métodos

Potencia de encadenar map, filter y reduce:

// Calcular total de productos en stock
const productos = [
  { nombre: 'Camiseta', precio: 20, stock: 5 },
  { nombre: 'Pantalón', precio: 35, stock: 0 },
  { nombre: 'Zapatos', precio: 50, stock: 10 }
];

const totalStock = productos
  .filter(p => p.stock > 0) // Filtrar productos con stock
  .map(p => p.stock)        // Extraer solo stock
  .reduce((acc, stock) => acc + stock, 0); // Sumar stock

// 15

// Obtener nombres de productos caros en stock
const productosCaros = productos
  .filter(p => p.stock > 0 && p.precio > 30)
  .map(p => p.nombre);
// ['Zapatos']

Encadenamiento permite crear pipelines de procesamiento de datos legibles

CF

Sobre el autor

Senior JavaScript Developer con 8 años de experiencia. Especialista en programación funcional y autor de 'JavaScript Array Mastery'.