Command Palette

Search for a command to run...

Método forEach(): Iteración de Arrays

Aprende a ejecutar una función sobre cada elemento de un array sin crear un nuevo array, ideal para efectos secundarios y operaciones que modifican el array original.

Lectura: 10 min
Nivel: Intermedio

TL;DR - Resumen rápido

  • forEach() ejecuta una función sobre cada elemento del array
  • No retorna ningún valor, siempre retorna undefined
  • Es ideal para efectos secundarios como modificar el DOM
  • Permite modificar el array original durante la iteración
  • Acepta hasta tres parámetros: elemento, índice y array

Introducción a forEach()

El método forEach() ejecuta una función proporcionada sobre cada elemento de un array, de izquierda a derecha. A diferencia demap() y filter() que crean nuevos arrays,forEach() no retorna ningún valor (siempre undefined) y no crea un nuevo array.

forEach() es especialmente útil cuando necesitas ejecutar efectos secundarios, como modificar el DOM, hacer peticiones asíncronas, o actualizar el estado de la aplicación. También es ideal cuando necesitas modificar el array original durante la iteración, algo que no puedes hacer conmap() o filter().

Iteración vs transformación

forEach() es para iteración y efectos secundarios. Usa map() y filter() cuando necesites crear nuevos arrays transformados.

El método forEach()

El método forEach() ejecuta una función de callback en cada elemento del array. La función recibe hasta tres argumentos: el elemento actual, su índice y el array completo. forEach() siempre retorna undefined, independientemente del resultado de la función de callback.

forEach() es ideal para operaciones que tienen efectos secundarios pero no necesitan un valor de retorno, como actualizar el DOM, hacer peticiones a una API, o modificar el estado de la aplicación. También es útil cuando necesitas modificar el array original durante la iteración, ya que forEach() permite acceder a los elementos por referencia.

Sintaxis de forEach()

La sintaxis de forEach() acepta una función de callback que se ejecutará en cada elemento del array. Opcionalmente, puedes especificar el valor de this dentro de la función de callback.

foreach-sintaxis-basica.js
Loading code...

El primer ejemplo muestra cómo usar forEach() para imprimir cada elemento del array. El segundo ejemplo demuestra cómo modificar el array original durante la iteración. El tercer ejemplo muestra cómo acceder al índice durante la iteración.

Parámetros de la función de callback

La función de callback puede recibir hasta tres parámetros:elemento (obligatorio), indice (opcional) yarray (opcional). Úsalos según necesites para tu lógica de iteración.

Usos comunes de forEach()

forEach() tiene múltiples aplicaciones prácticas en el desarrollo diario, especialmente para efectos secundarios y modificación del array original.

foreach-usos-practicos.js
Loading code...

El primer ejemplo muestra cómo usar forEach() para renderizar elementos en el DOM. El segundo ejemplo demuestra cómo modificar el array original durante la iteración. El tercer ejemplo muestra cómo calcular la suma de elementos usando forEach().

  • Renderizar listas de elementos en el DOM
  • Modificar el array original durante la iteración
  • Hacer peticiones asíncronas para cada elemento
  • Calcular sumas, promedios u otros agregados
  • Actualizar el estado de la aplicación

Diferencias con map() y filter()

Es importante entender las diferencias clave entre forEach()y los métodos de transformación como map() yfilter(). La elección correcta depende de si necesitas iterar con efectos secundarios o crear nuevos arrays.

diferencias-map-foreach.js
Loading code...

El ejemplo muestra cómo forEach() permite modificar el array original, mientras que map() y filter() crean nuevos arrays. forEach() es ideal para efectos secundarios, mientras que map() y filter() son mejores para transformación y filtrado de datos.

  • Usa forEach() cuando necesites efectos secundarios
  • Usa map() o filter() cuando necesites nuevos arrays
  • forEach() permite modificar el array original
  • map() y filter() son más funcionales y declarativos
  • Elige el método según el objetivo de tu operación

Errores Comunes

Al trabajar con forEach(), hay varios errores comunes que puedes encontrar, especialmente relacionados con el retorno de valores, la confusión con métodos de transformación, y el uso incorrecto para ciertos casos de uso.

Error: Intentar interrumpir forEach() con break o return

Un error muy común es intentar salir anticipadamente de unforEach() usando break o return. A diferencia de los bucles tradicionales, forEach() no se puede interrumpir: break causa un error de sintaxis y returnsolo sale de la iteración actual, no del forEach() completo.

error-break-return.js
Loading code...

El ejemplo muestra que break no funciona enforEach() y return solo sale de la iteración actual. Si necesitas interrumpir la iteración anticipadamente, usafor...of o un bucle for tradicional que soportanbreak y continue.

forEach() no se puede interrumpir

Si necesitas salir anticipadamente de la iteración, usa for...ofo un bucle for tradicional en lugar de forEach(). También puedes usar some() o every() para búsquedas con condiciones.

Error: Esperar valor de retorno

Un error común es intentar capturar el valor de retorno deforEach(). Como forEach() siempre retornaundefined, intentar usar el valor de retorno es inútil y puede causar confusión.

error-valor-retorno.js
Loading code...

El ejemplo muestra que intentar capturar el valor de retorno deforEach() no funciona, ya que siempre retornaundefined. Si necesites el valor de la función de callback, usa map() o filter() en lugar deforEach().

Error: Usar forEach() para transformar datos

Otro error común es usar forEach() cuando el objetivo principal es transformar datos y crear un nuevo array. Para este caso, map() o filter() son mucho más apropiados, ya que crean nuevos arrays sin modificar el original.

error-usar-para-transformar.js
Loading code...

El ejemplo muestra cómo map() es más apropiado para transformar datos, ya que crea un nuevo array. Usa forEach()solo cuando necesitas efectos secundarios o modificar el array original.

Error: No crear copia antes de modificar

Un error común es modificar el array original dentro deforEach() sin crear una copia primero. Esto puede causar efectos secundarios inesperados en otras partes de la aplicación que también usan el array.

error-no-crear-copia.js
Loading code...

El ejemplo muestra cómo modificar el array original dentro deforEach() causa cambios en el array que se ve en la consola. La solución es crear una copia del array antes de modificarlo.

Copia antes de modificar

Si necesitas preservar el array original, crea una copia con [...array] o array.slice() antes de usar forEach() para modificar la copia.

Resumen: Método forEach()

Conceptos principales:

  • forEach() ejecuta una función sobre cada elemento del array
  • No retorna ningún valor, siempre retorna undefined
  • Acepta hasta tres parámetros: elemento, índice y array
  • Permite modificar el array original durante la iteración
  • No se puede interrumpir con break o return anticipadamente

Mejores prácticas:

  • Usa forEach() cuando necesites efectos secundarios
  • Usa map() o filter() cuando necesites nuevos arrays
  • Usa for...of si necesitas break o continue
  • Crea una copia antes de modificar el array original
  • No intentes capturar el valor de retorno de forEach()