Arrays
Aprende a trabajar con arrays en JavaScript: crear, acceder, modificar y transformar listas con los métodos esenciales map, filter, reduce, find y más.
Un array es una lista ordenada de valores. Es la estructura de datos más usada en JavaScript: listas de usuarios, resultados de una API, elementos de un carrito de compra — todo acaba siendo arrays.
Crear y acceder
const frutas = ['manzana', 'pera', 'naranja'];
frutas[0] // 'manzana' — índice empieza en 0
frutas[1] // 'pera'
frutas[2] // 'naranja'
frutas[3] // undefined — no existe
frutas.length // 3 — número de elementos
// Último elemento
frutas[frutas.length - 1] // 'naranja'
frutas.at(-1) // 'naranja' — forma moderna
Los arrays pueden contener cualquier tipo, incluso mezclados:
const mixto = [1, 'texto', true, null, { nombre: 'Ana' }, [1, 2]];
Métodos básicos
Añadir y quitar elementos
const arr = [1, 2, 3];
arr.push(4); // añade al final → [1, 2, 3, 4]
arr.pop(); // quita el último → [1, 2, 3], devuelve 4
arr.unshift(0); // añade al inicio → [0, 1, 2, 3]
arr.shift(); // quita el primero → [1, 2, 3], devuelve 0
Buscar
const nums = [10, 20, 30, 20, 40];
nums.indexOf(20) // 1 — primer índice donde aparece
nums.lastIndexOf(20) // 3 — último índice
nums.includes(30) // true — ¿existe el valor?
nums.includes(99) // false
Ordenar y revertir
const letras = ['c', 'a', 'b'];
letras.sort() // ['a', 'b', 'c'] — modifica el array original
const nums = [10, 2, 30, 4];
nums.sort() // [10, 2, 30, 4] — mal: ordena como strings
nums.sort((a, b) => a - b) // [2, 4, 10, 30] — correcto para números
const arr = [1, 2, 3];
arr.reverse() // [3, 2, 1]
slice y splice
const arr = [1, 2, 3, 4, 5];
// slice — extrae sin modificar el original
arr.slice(1, 3) // [2, 3] — desde índice 1 hasta 3 (sin incluir)
arr.slice(-2) // [4, 5] — últimos 2 elementos
arr // [1, 2, 3, 4, 5] — sin cambios
// splice — modifica el array original
arr.splice(1, 2) // elimina 2 elementos desde índice 1 → devuelve [2, 3]
arr // [1, 4, 5]
arr.splice(1, 0, 99) // inserta 99 en índice 1 sin eliminar
arr // [1, 99, 4, 5]
Métodos de transformación (los más importantes)
Estos métodos no modifican el array original — devuelven uno nuevo.
map — transforma cada elemento
const precios = [10, 20, 30];
const conIVA = precios.map(precio => precio * 1.21);
// [12.1, 24.2, 36.3]
const usuarios = [{ nombre: 'Ana', edad: 28 }, { nombre: 'Luis', edad: 34 }];
const nombres = usuarios.map(u => u.nombre);
// ['Ana', 'Luis']
filter — filtra según una condición
const nums = [1, 2, 3, 4, 5, 6];
const pares = nums.filter(n => n % 2 === 0);
// [2, 4, 6]
const usuarios = [
{ nombre: 'Ana', activo: true },
{ nombre: 'Luis', activo: false },
{ nombre: 'Marta', activo: true },
];
const activos = usuarios.filter(u => u.activo);
// [{ nombre: 'Ana', ... }, { nombre: 'Marta', ... }]
find — devuelve el primer elemento que cumple la condición
const usuarios = [
{ id: 1, nombre: 'Ana' },
{ id: 2, nombre: 'Luis' },
{ id: 3, nombre: 'Marta' },
];
const usuario = usuarios.find(u => u.id === 2);
// { id: 2, nombre: 'Luis' }
const noExiste = usuarios.find(u => u.id === 99);
// undefined
reduce — acumula un valor
El más potente y el más confuso al principio. Útil para sumas, agrupaciones, transformaciones complejas:
// Acumulador, elementoActual, índice (opcional), array (opcional)
array.reduce((acumulador, elemento) => nuevoAcumulador, valorInicial)
const precios = [10, 20, 30, 15];
const total = precios.reduce((suma, precio) => suma + precio, 0);
// 75
// Contar ocurrencias
const frutas = ['manzana', 'pera', 'manzana', 'naranja', 'pera', 'manzana'];
const conteo = frutas.reduce((acc, fruta) => {
acc[fruta] = (acc[fruta] ?? 0) + 1;
return acc;
}, {});
// { manzana: 3, pera: 2, naranja: 1 }
forEach — ejecuta una acción por cada elemento
const frutas = ['manzana', 'pera', 'naranja'];
frutas.forEach((fruta, índice) => {
console.log(`${índice}: ${fruta}`);
});
forEachno devuelve nada. Úsalo para efectos secundarios (logs, mutaciones). Para transformar datos, usamap.
some y every
const nums = [1, 3, 5, 7, 8];
nums.some(n => n % 2 === 0) // true — al menos uno es par
nums.every(n => n % 2 === 0) // false — no todos son pares
Combinar arrays: spread y concat
const a = [1, 2, 3];
const b = [4, 5, 6];
const combinado = [...a, ...b]; // [1, 2, 3, 4, 5, 6]
const combinado2 = a.concat(b); // mismo resultado
const conExtra = [...a, 99, ...b]; // [1, 2, 3, 99, 4, 5, 6]
Desestructuración de arrays
const [primero, segundo, ...resto] = [10, 20, 30, 40, 50];
primero // 10
segundo // 20
resto // [30, 40, 50]
// Intercambiar variables
let x = 1, y = 2;
[x, y] = [y, x];
// x = 2, y = 1
En la siguiente lección vemos los objetos: la estructura para agrupar datos y comportamientos relacionados.