# 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`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749621519565/f1b14498-6066-415e-8967-9405f81f86c6.png align="center")

✅ **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:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749621630400/3b8e68e2-e89c-45f7-bde9-33273356dd76.png align="center")

✅ **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.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749621730450/79765247-85dc-4bb6-b868-dfa45a78ed7e.png align="center")

Uso:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749621820775/3ea48a07-887f-4e2b-b6be-abf6c87dd1a4.png align="center")

✅ **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()`:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1749621897016/19a398fe-c58b-4b5e-bb6f-791e245f57d8.png align="center")

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

### Comparativa rápida entre métodos

| Método | Legibilidad | Compatibilidad | Evita propiedades heredadas | Reutilizable | Moderno |
| --- | --- | --- | --- | --- | --- |
| for...in + .hasOwnProperty | Media | Alta | ✅ | ❌ | ❌ |
| $.each() (jQuery) | Alta | Media | ✅ (jQuery lo maneja) | ❌ | ❌ |
| forIn() personalizado | Media | Alta | ❌ | ✅ | ❌ |
| Object.entries() | Alta | Media-Alta | ✅ | ❌ | ✅ |
