El bucle for en JavaScript y qué bucle usar

Bucles de JavaScript comparados

El bucle for de JavaScript y todos los demás, comparados en directo | We.Inc

for, for...of, for...in, while, do...while y forEach lado a lado. Ejecuta cada bucle sobre un array, un string, un objeto o un Map y mira la salida, o el error que lanza.

Un bucle for clásico tiene tres partes: for (let i = 0; i < arr.length; i++) { ... }. Úsalo cuando necesites el índice o un paso personalizado. Para valores simples usa for...of, para las claves de un objeto usa for...in u Object.entries, y usa while cuando no sabes de antemano cuántas vueltas necesitas.

Qué bucle encaja con cada tarea

Todos los bucles de esta página repiten código, pero se diferencian en lo que te entregan en cada vuelta, en lo que pueden recorrer y en cómo sales de ellos. El ejecutor de abajo te permite aplicar cada bucle a cuatro tipos de datos y ver la salida real, lo que hace fácil detectar errores como for...in sobre un array o for...of sobre un objeto simple.

Preguntas frecuentes

¿Qué diferencia hay entre for...of y for...in?

for...of te da los valores de cualquier iterable, como los elementos de un array o los caracteres de un string. for...in te da los nombres de las propiedades como strings, incluidas las enumerables heredadas. Sobre un array, for...in devuelve '0', '1', '2' en lugar de los elementos.

¿Cómo salgo de un bucle forEach?

No se puede, salvo lanzando un error. Cambia a for...of, que admite break, o a some, every, find o findIndex, que se detienen solos en cuanto tienen una respuesta.

¿Cómo recorro un objeto en JavaScript?

Usa for (const [key, value] of Object.entries(obj)). Solo cubre las claves propias del objeto y te da ambas partes. Usar for...of directamente sobre un objeto simple lanza TypeError: obj is not iterable.

¿Cómo salgo de dos bucles anidados a la vez?

Pon una etiqueta antes del bucle exterior y úsala con break: outer: for (...) { for (...) { if (found) break outer; } }. continue outer, en cambio, salta a la siguiente vuelta del bucle exterior.

¿Cómo recorro un array hacia atrás?

Empieza en el último índice y cuenta hacia abajo: for (let i = arr.length - 1; i >= 0; i--). También es la forma segura de quitar elementos con splice mientras recorres, porque las posiciones que aún no has visitado no se desplazan.

Las tres partes de un bucle for

break, continue y etiquetas

Patrones de bucle para copiar

for clásico, hacia delante, hacia atrás y a saltos

Cambia el inicio, la condición o el paso para contar como quieras.

for...of con el índice

entries() empareja cada valor con su posición, así obtienes ambos sin contador.

while y do...while

do...while comprueba su condición después del cuerpo, así que el cuerpo se ejecuta una vez aunque la condición empiece siendo falsa.

Salir de bucles anidados con una etiqueta

break grid detiene ambos bucles en cuanto se encuentra la primera coincidencia.

Hacer await de cada elemento en orden

for...of se detiene en cada await. El mismo código dentro de forEach lanzaría todas las peticiones a la vez sin esperar.

Ejecutor de bucles

Elige un bucle y unos datos. El bucle se ejecuta de verdad y cada vuelta aparece abajo.

Bucle

Datos

Array

String

Objeto simple

Map

break después de la tercera vuelta

Lo que se ejecuta

Salida

Vuelta {n}: {v}

forEach no tiene break. El return dentro del callback solo termina esa llamada, así que todas las vueltas se ejecutan igualmente.

Lanza {v}

Empieza gratis · Sin tarjeta de crédito

Relacionado: Guías

Producto

Para quién es

Funciones

Recursos

Empresa

Mapa del sitio