Iteración sobre Objetos con forIn en JavaScript

Clase 17 de 55Curso de Fundamentos de JavaScript

Contenido del curso

Introducción a JavaScript

Estructuras de Control y Lógica

Manipulación de Arrays

Programación Orientada a Objetos

Asincronía en JavaScript

Resumen

Cuando trabajas con estructuras de datos en JavaScript, no todo se resuelve con arrays o strings. Los objetos representan información de manera distinta: cada dato tiene un nombre (propiedad) y un valor asociado. Para recorrer esas propiedades existe una herramienta específica llamada for-in, y entender cuándo y cómo usarla marca la diferencia entre código funcional y errores inesperados.

¿Qué es un objeto y en qué se diferencia de un array?

Un objeto es una estructura de datos que almacena información en pares de propiedad y valor [0:30]. A diferencia de un array, que simplemente genera una lista de elementos, un objeto necesita siempre esa relación entre la propiedad (el nombre) y su valor correspondiente.

Por ejemplo, una lista de compras como objeto se vería así:

javascript const listaDeCompras = { manzana: 5, pera: 3, naranja: 2, uva: 1 };

Aquí manzana, pera, naranja y uva son las propiedades, mientras que 5, 3, 2 y 1 son sus valores. Este objeto contiene cuatro propiedades, cada una con un dato asociado.

¿Cómo funciona la estructura del for-in?

La sintaxis del for-in sigue un patrón claro [1:15]:

javascript for (variable in objeto) { // código a ejecutar }

  • for: palabra reservada que inicia el ciclo.
  • variable: almacena la propiedad actual en cada iteración.
  • in: indica sobre qué objeto se itera.
  • objeto: la estructura enumerable que se recorre.

La traducción es directa: por cada propiedad en este objeto, ejecuta el bloque de código.

¿Cómo obtener solo las propiedades?

Si únicamente necesitas los nombres de las propiedades, basta con imprimir la variable del ciclo [3:10]:

javascript for (let fruta in listaDeCompras) { console.log(fruta); } // manzana // pera // naranja // uva

¿Cómo acceder al valor de cada propiedad?

Para obtener tanto la propiedad como su valor, se utiliza la notación de corchetes cuadrados sobre el objeto [3:45]:

javascript for (let fruta in listaDeCompras) { console.log(fruta, listaDeCompras[fruta]); } // manzana 5 // pera 3 // naranja 2 // uva 1

Lo que sucede internamente es que la variable fruta actúa como un índice que referencia cada propiedad del objeto. En cada iteración, ese índice cambia y apunta a la siguiente propiedad, permitiendo extraer su valor con listaDeCompras[fruta] [4:30].

¿Cuál es la diferencia entre for-in y for-of?

Esta distinción es fundamental y fuente común de errores. JavaScript clasifica las estructuras de datos en dos categorías para efectos de iteración:

  • Objetos iterables: arrays y strings. Se recorren con for-of.
  • Objetos enumerables: objetos con propiedades. Se recorren con for-in.

Si intentas usar for-of con un objeto, JavaScript lanza un error claro [5:30]:

javascript for (let fruta of listaDeCompras) { console.log(fruta); } // TypeError: listaDeCompras is not iterable

El mensaje "is not iterable" confirma que los objetos no son iterables, son enumerables. Por eso necesitan su propio método de recorrido.

La regla práctica es sencilla:

  • for-in → para objetos con propiedades y valores.
  • for-of → para arrays y strings.

Confundir estos dos métodos es uno de los errores más frecuentes al empezar con JavaScript. Ahora que conoces la diferencia entre estructuras iterables y enumerables, ¿en qué otros escenarios crees que sería útil aplicar for-in en tus proyectos?