Iterar objetos en JavaScript

Aquí recopilo algunos enfoques clásicos y útiles: uno con for...in, otro con jQuery, una función personalizada al estilo de mout.js y, finalmente, una recomendación moderna con Object.entries().

1 Usando for...in con hasOwnProperty

Este es un enfoque clásico, pero hay que tener cuidado: for...in recorre también propiedades heredadas. Para evitarlo, usamos hasOwnProperty.

Ventaja: Alta compatibilidad.
⚠️ Cuidado: Requiere hasOwnProperty para evitar propiedades heredadas.

2 Usando jQuery .each()

Si ya estás usando jQuery en tu proyecto, este método es cómodo y expresivo:

Ventaja: Sintaxis clara y manejo uniforme para arrays y objetos.
⚠️ Cuidado: Requiere jQuery. No recomendable en proyectos modernos sin jQuery.

3 Implementación personalizada tipo forIn (mout.js)

Ideal si quieres una función más reutilizable, por ejemplo para ejecutar una función en cada par clave-valor.

Uso:

Ventaja: Flexible y extensible.
⚠️ Cuidado: Usa for...in, así que ten en cuenta propiedades heredadas.

💡 Recomendación moderna

Si no necesitas compatibilidad con navegadores muy antiguos, lo más recomendable es usar Object.entries() o Object.keys():

Ventaja: Legible, moderna y segura (no recorre heredadas).
🎯 Ideal para proyectos actuales con ES6+.

Comparativa rápida entre métodos

MétodoLegibilidadCompatibilidadEvita propiedades heredadasReutilizableModerno
for...in + .hasOwnPropertyMediaAlta
$.each() (jQuery)AltaMedia✅ (jQuery lo maneja)
forIn() personalizadoMediaAlta
Object.entries()AltaMedia-Alta
0
Subscribe to my newsletter

Read articles from Cristian Martin Farias directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Cristian Martin Farias
Cristian Martin Farias

Desarrollador apasionado por convertir bugs en funcionalidades (y café en productividad). Especialista en sistemas distribuidos, microservicios y todo lo que hace que la tecnología funcione… o finja que lo hace. Amante del código limpio, aunque mi historial de commits podría decir otra cosa. Siempre aprendiendo, siempre depurando, y ocasionalmente negociando con mi teclado para que coopere.