¿Cómo funciona el método forEach() en JavaScript?
Respuesta corta: forEach() recorre un array y ejecuta una función una vez por cada elemento, en orden. La función recibe el elemento actual, su índice y el array completo. forEach() no devuelve nada (undefined), así que úsalo para hacer algo con cada elemento: mostrarlo, guardarlo o pintarlo en la página.
const animales = ["perro", "gato", "pez"];
animales.forEach((animal, indice) => {
console.log(indice, animal);
});
// 0 perro
// 1 gato
// 2 pezSi lo que necesitas es un array nuevo, usa map(). Si quieres quedarte solo con algunos elementos, usa filter().
forEach() ejecuta la función en cada elemento y devuelve undefined. Para transformar un array en otro, usa map().
Sintaxis de forEach()
array.forEach((elementoActual, indice, array) => {
// lo que quieras hacer con cada elemento
});| Parámetro | Qué es | ¿Obligatorio? |
|---|---|---|
elementoActual | El elemento del array en esta vuelta | Sí |
indice | La posición del elemento, empezando en 0 | No |
array | El array completo que se está recorriendo | No |
forEach() siempre devuelve undefined y se salta las posiciones vacías de un array con huecos, como [1, , 3]. No cambia el array por sí mismo, pero la función que le pasas sí puede modificar los objetos que contiene.
Ejemplos de forEach() en JavaScript
Mostrar cada elemento con su posición
const tareas = ["Estudiar", "Programar", "Descansar"];
tareas.forEach((tarea, i) => {
console.log(`${i + 1}. ${tarea}`);
});
// 1. Estudiar
// 2. Programar
// 3. DescansarSumar los elementos de un array
const precios = [12, 30, 8];
let total = 0;
precios.forEach((precio) => {
total += precio;
});
console.log(total); // 50Para sumar, precios.reduce((suma, p) => suma + p, 0) hace lo mismo en una línea. Lo tienes explicado en cómo usar reduce() en JavaScript.
Actualizar los objetos de un array
const alumnos = [
{ nombre: "Ana", nota: 80 },
{ nombre: "Luis", nota: 90 },
];
alumnos.forEach((alumno) => {
alumno.nota += 5;
});
console.log(alumnos);
// [ { nombre: 'Ana', nota: 85 }, { nombre: 'Luis', nota: 95 } ]Esto cambia los objetos originales. Si necesitas conservarlos, crea copias con map().
Crear una lista en la página (DOM)
const productos = ["Laptop", "Audífonos", "Monitor"];
const lista = document.querySelector("#lista");
productos.forEach((producto) => {
const li = document.createElement("li");
li.textContent = producto;
lista.appendChild(li);
});document.querySelectorAll() devuelve una NodeList, que también tiene forEach():
document.querySelectorAll("button").forEach((boton) => {
boton.addEventListener("click", () => console.log("clic"));
});Recorrer un objeto
Los objetos no tienen forEach(). Conviértelo antes en un array con Object.entries():
const usuario = { nombre: "Ana", edad: 30 };
Object.entries(usuario).forEach(([clave, valor]) => {
console.log(`${clave}: ${valor}`);
});
// nombre: Ana
// edad: 30Recorrer un Map
const stock = new Map([["manzanas", 10], ["peras", 4]]);
stock.forEach((cantidad, fruta) => {
console.log(fruta, cantidad);
});
// manzanas 10
// peras 4En un Map, la función recibe primero el valor y después la clave. Los Set también tienen forEach().
