Saltar al contenido
Curso de JavaScript
Todos los cursos Ir al ejercicio →

Arrays

  • ⏱ 45 minutos
  • 📶 Nivel: principiante
  • 🧩 Incluye ejercicio

💡 🎯 Al terminar esta lección podrás…

  • Crear, leer y modificar arrays.
  • Recorrer listas con for…of y forEach.
  • Transformar y resumir datos con map, filter y reduce.
  • Buscar y ordenar sin cometer los errores habituales.

1.Qué es un array

Un array es una lista ordenada de valores guardados en una sola variable: los nombres de tus contactos, los precios de una tienda, las tareas de un día. Cada valor ocupa una posición (índice) que empieza en 0.

Crear y leer un array
const colores = ["rojo", "verde", "azul"];
//                  [0]     [1]      [2]

console.log(colores[0]);         // "rojo"
console.log(colores[2]);         // "azul"
console.log(colores[5]);         // undefined (no existe)
console.log(colores.length);     // 3
console.log(colores[colores.length - 1]);   // el último: "azul"
console.log(colores.at(-1));     // también el último
▶ Tu primer array
Consola

⚠️ Importante · Se empieza a contar desde 0

El primer elemento es el [0] y el último es [length - 1]. Es la fuente de errores «por uno» más habitual. Y aunque el array se declare con const, sus elementos sí se pueden cambiar: const impide reasignar la variable, no modificar el contenido.

2.Añadir, quitar y buscar

MétodoQué haceDevuelveModifica
push(x)Añade al finalla nueva longitudSí
pop()Quita del finalel elemento quitadoSí
unshift(x)Añade al principiola nueva longitudSí
shift()Quita del principioel elemento quitadoSí
splice(i, n, …)Quita n elementos desde i (y puede insertar)los quitadosSí
slice(a, b)Copia un trozoun array nuevoNo
concat(otro) / [...a, ...b]Une arraysun array nuevoNo
indexOf(x) / includes(x)Posición / ¿existe?número / booleanoNo
join(sep)Convierte en textostringNo
reverse() / sort()Invierte / ordenael mismo arraySí
▶ Un carrito de compras
Consola

📌 Nota · Modificar o copiar

Algunos métodos modifican el array original (push, pop, splice, sort, reverse) y otros devuelven uno nuevo (slice, map, filter, concat). Saber cuál es cuál evita sorpresas. Para trabajar con seguridad, prefiere copiar: [...arr] o arr.slice().

3.Recorrer un array

▶ Tres formas de recorrer
Consola

4.Los métodos que más usarás: map, filter, reduce

En lugar de escribir un bucle cada vez, los arrays traen métodos que reciben una función (un callback) y hacen el trabajo repetitivo. Los tres más importantes:

MétodoPara quéDevuelveEjemplo
map(fn)Transformar cada elementoUn array del mismo tamaño[1,2,3].map(n => n * 2) → [2,4,6]
filter(fn)Quedarse con los que cumplanUn array igual o más corto[1,2,3,4].filter(n => n % 2 === 0) → [2,4]
reduce(fn, inicial)Resumir todo en un valorUn solo valor[1,2,3].reduce((total, n) => total + n, 0) → 6
▶ map, filter y reduce
Consola

💡 Consejo · Cómo leer reduce

reduce((acumulado, elemento) => nuevoAcumulado, valorInicial). En cada vuelta recibes lo acumulado hasta ahora y el elemento actual, y devuelves el nuevo acumulado. El último valor es el resultado final. Si te cuesta, escribe primero el for equivalente y compáralo.

5.Buscar y comprobar

MétodoQué respondeEjemplo
find(fn)El primer elemento que cumple (o undefined)usuarios.find(u => u.id === 3)
findIndex(fn)Su posición (o -1)nums.findIndex(n => n > 10)
some(fn)¿Alguno cumple?nums.some(n => n < 0)
every(fn)¿Todos cumplen?nums.every(n => n > 0)
includes(valor)¿Contiene este valor?["a","b"].includes("a")
▶ Buscar y comprobar
Consola

6.Ordenar con sort

sort() ordena modificando el array. Y tiene una trampa famosa: por defecto ordena como texto, no como números.

▶ La trampa de sort
Consola

⚠️ Importante · La función de comparación

(a, b) => a - b devuelve negativo si a va antes, positivo si va después y 0 si empatan. Para textos con tildes y eñes usa a.localeCompare(b, "es"). Y como sort modifica el original, cópialo antes con [...arr] si no quieres perder el orden.

7.Desestructurar y copiar

Sacar valores de un array
const [primero, segundo, ...resto] = [10, 20, 30, 40];
console.log(primero, segundo, resto);       // 10 20 [30, 40]

// Intercambiar dos variables
let a = 1, b = 2;
[a, b] = [b, a];
console.log(a, b);                           // 2 1

// Copiar y combinar
const original = [1, 2, 3];
const copia = [...original];                // copia superficial
const ampliada = [0, ...original, 4];      // [0, 1, 2, 3, 4]

📌 Nota · Copias superficiales

[...arr] y arr.slice() copian un nivel: si los elementos son objetos u otros arrays, la copia comparte esas referencias. Para copias profundas existe structuredClone(arr).

8.Errores frecuentes

📒 Apuntes para llevar

  • Un array es una lista ordenada; los índices empiezan en 0 y length da la cantidad.
  • push/pop trabajan al final y unshift/shift al principio; splice quita o inserta en cualquier punto.
  • slice, concat, map, filter y [...arr] no modifican el original; sort, reverse, splice, push… sí.
  • for, for…of y forEach recorren; map transforma, filter selecciona y reduce resume.
  • find, findIndex, some, every e includes buscan y comprueban.
  • sort ordena como texto por defecto: usa (a, b) => a - b para números y localeCompare para textos.
  • La desestructuración (const [a, b] = arr) y el spread ([...arr]) simplifican copias y asignaciones.
  • Una copia con [...arr] es superficial; para copias profundas, structuredClone().

9.Glosario

TérminoSignificado
ArrayLista ordenada de valores.
ÍndicePosición de un elemento; empieza en 0.
MétodoFunción que pertenece a un valor (arr.push()).
CallbackFunción que se pasa a un método para que la ejecute con cada elemento.
mapCrea un array nuevo transformando cada elemento.
filterCrea un array nuevo con los elementos que cumplen una condición.
reduceResume un array en un solo valor.
Spread (...)Reparte los elementos de un array.

🧠 Comprueba lo aprendido

Elige una respuesta en cada pregunta. Verás al instante si acertaste y por qué.

¿Cuál es el índice del último elemento de un array a?

¿Qué devuelve [1, 2, 3].map(n => n * 2)?

¿Qué hace [5, 12, 8].filter(n => n > 6)?

¿Qué da [10, 9, 1].sort() sin función de comparación?

¿Cuál de estos métodos modifica el array original?

Tu progreso se guarda en este navegador y se refleja en el índice del curso.

💡 🚀 ¡Ahora te toca!

La práctica fija lo aprendido. Pasa al ejercicio de esta lección.

Ir al ejercicio