¿Cómo recorrer un array en JavaScript?
Respuesta corta: la forma más sencilla es for...of, que te da cada elemento por orden. Usa forEach() si prefieres una función, un for clásico si necesitas controlar el índice, y map(), filter() o reduce() cuando quieres crear un resultado nuevo a partir del array.
const frutas = ["manzana", "pera", "uva"];
for (const fruta of frutas) {
console.log(fruta);
}manzana
pera
uvafor...of funciona con arrays, cadenas de texto y otros objetos iterables, y permite salir antes con break.
Para recorrer elige for...of o forEach(); para transformar, map().
Formas de recorrer un array en JavaScript
| Forma | Úsala para | ¿Admite break? | Devuelve |
|---|---|---|---|
for...of | Recorrer los elementos, la opción por defecto | Sí | Nada |
for clásico | Controlar el índice, ir hacia atrás o saltar elementos | Sí | Nada |
forEach() | Ejecutar una función por cada elemento | No | undefined |
map() | Crear un array nuevo transformando cada elemento | No | Un array del mismo tamaño |
filter() | Quedarte con los elementos que cumplen una condición | No | Un array más corto |
reduce() | Calcular un único valor, como una suma | No | Un valor |
find(), some(), every() | Buscar o comprobar | Paran solos | Un elemento o true/false |
for...of
for (const fruta of frutas) {
console.log(fruta);
}Si también necesitas la posición, usa entries():
for (const [i, fruta] of frutas.entries()) {
console.log(i, fruta);
}0 manzana
1 pera
2 uvafor clásico
for (let i = 0; i < frutas.length; i++) {
console.log(i, frutas[i]);
}Es el más flexible: puedes empezar por el final con for (let i = frutas.length - 1; i >= 0; i--) o avanzar de dos en dos con i += 2.
forEach()
frutas.forEach((fruta, i) => {
console.log(`${i}: ${fruta}`);
});0: manzana
1: pera
2: uvaforEach() recibe el elemento, el índice y el array completo. No se puede detener con break; si necesitas parar, usa for...of. Tienes más ejemplos en la guía del método forEach() en JavaScript.
Recorrer un array para crear un resultado
Muchas veces no recorres un array solo para mirarlo, sino para obtener algo nuevo. Para eso hay métodos que lo hacen en una línea.
map(): transformar cada elemento
const precios = [10, 25, 40];
const conIva = precios.map(p => p * 1.21);
console.log(conIva); // [12.1, 30.25, 48.4]filter(): quedarte con algunos
const caros = precios.filter(p => p > 20);
console.log(caros); // [25, 40]reduce(): calcular un total
const total = precios.reduce((suma, p) => suma + p, 0);
console.log(total); // 75Tienes más ejemplos en la guía del método reduce() en JavaScript.
find(), some() y every(): buscar y comprobar
precios.find(p => p > 20); // 25, el primero que cumple
precios.some(p => p > 30); // true, al menos uno cumple
precios.every(p => p > 5); // true, todos cumplenEstos tres métodos dejan de recorrer el array en cuanto tienen la respuesta.
