La estructura for...in
En JavaScript, la estructura for...in se utiliza para recorrer las propiedades enumerables de un objeto. Es una forma conveniente de iterar sobre todas las claves de un objeto, pero también se puede usar con arrays (aunque no es la mejor práctica para este propósito).
1. Cómo funciona for...in? #
El bucle for...in itera sobre todas las propiedades enumerables de un objeto, es decir, aquellas propiedades que se pueden recorrer. En cada iteración, el bucle asigna el nombre de la propiedad (la clave) a una variable, que luego se puede usar para acceder al valor de esa propiedad.
Sintaxis básica:
1for (variable in objeto) { 2 // Código a ejecutar para cada propiedad 3}
variable: Es una variable que se asigna al nombre de cada propiedad en cada iteración.objeto: Es el objeto cuyas propiedades se van a recorrer.
Ejemplo con un objeto #
Supongamos que tienes un objeto con información sobre una persona y quieres imprimir todas sus propiedades y valores:
1let persona = { 2 nombre: "Juan", 3 edad: 30, 4 ciudad: "Madrid" 5}; 6 7for (let propiedad in persona) { 8 console.log(propiedad + ": " + persona[propiedad]); 9}Salida de consola nombre: Juan edad: 30 ciudad: Madrid
En este ejemplo:
- El bucle
for...inrecorre todas las propiedades del objetopersona. - En cada iteración,
propiedadtoma el nombre de una de las propiedades (nombre,edad,ciudad). - Usamos
persona[propiedad]para acceder al valor asociado a cada propiedad.
Usar for...in con arrays #
Aunque for...in puede usarse con arrays, no es la mejor opción porque también itera sobre las propiedades heredadas y no garantiza el orden de los elementos. Para recorrer arrays, es mejor usar un bucle for normal o un bucle for...of.
Ejemplo con un array (no recomendado):
1let frutas = ["🍎 Manzana", "🍌 Banana", "🍒 Cereza"]; 2 3for (let indice in frutas) { 4 console.log(indice + ": " + frutas[indice]); 5}Salida de consola 0: 🍎 Manzana 1: 🍌 Banana 2: 🍒 Cereza
En este caso:
- El bucle recorre los índices del array
frutasy accede a los elementos usandofrutas[indice]. - Aunque esto funciona, es preferible usar
for...ofo un bucleforpara iterar sobre arrays.
Resumen del tema
Conceptos clave #
- Propósito de
for...in: itera sobre todas las claves/propiedades enumerables de un objeto y su cadena de prototipos. - Acceso por Clave: la variable de iteración contiene el nombre de la clave como string (
for (const key in obj)); se accede al valor conobj[key]. - Desaconsejado para Arrays: en arrays itera índices como strings y puede incluir propiedades personalizadas o métodos del prototipo sin garantizar orden secuencial estricto.
Qué debes recordar #
Usa for...in exclusivamente para iterar claves de objetos; para recorrer arrays o iterables usa for...of o métodos funcionales como forEach().