Cómo recorrer un objeto en JavaScript: 5 formas con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Cómo recorrer un objeto en JavaScript: de principiante a profesional

\n\n

Cada desarrollador, tarde o temprano, se enfrenta a la tarea: «¿Cómo recorro todas las propiedades de un objeto?». La pregunta es tan popular que en Stack Overflow ha acumulado miles de visitas y cientos de respuestas. Y no es de extrañar: los objetos en JavaScript son la base de todo, desde configuraciones hasta datos del servidor.

\n\n

En este tutorial analizaremos todas las formas principales de recorrer un objeto en JavaScript, desde los clásicos hasta los métodos modernos. Aprenderás cuándo usar for...in, en qué es mejor Object.keys y cómo Object.entries simplifica la vida. ¡Allá vamos!

\n\n

Preparación: creamos un objeto de prueba

\n\n

Para que los ejemplos sean claros, tomemos un objeto de usuario simple:

\n\n
const user = {\n  name: 'Ana',\n  age: 28,\n  city: 'Moscú',\n  isAdmin: false\n};
\n\n

Nuestra tarea es mostrar todas las claves y valores. Veamos qué herramientas hay en el arsenal de JavaScript.

\n\n

1. Bucle for...in — el clásico del género

\n\n

La forma más antigua y básica de recorrer las propiedades de un objeto. Apareció en ES3 y funciona en todos los navegadores.

\n\n
for (let key in user) {\n  console.log(key + ': ' + user[key]);\n}\n// name: Ana\n// age: 28\n// city: Moscú\n// isAdmin: false
\n\n

Un detalle importante: for...in recorre no solo las propiedades propias, sino también las heredadas a través del prototipo. Para filtrarlas, usa hasOwnProperty:

\n\n
for (let key in user) {\n  if (user.hasOwnProperty(key)) {\n    console.log(key + ': ' + user[key]);\n  }\n}
\n\n

Los objetos modernos rara vez tienen propiedades prototípicas adicionales, pero el hábito de verificar hasOwnProperty te protegerá de errores al trabajar con librerías.

\n\n

2. Object.keys() — un enfoque moderno

\n\n

El método Object.keys() devuelve un array de las claves propias del objeto. Esto elimina los problemas con los prototipos y da acceso a todos los métodos de arrays.

\n\n
const keys = Object.keys(user);\nconsole.log(keys); // ['name', 'age', 'city', 'isAdmin']\n\nkeys.forEach(key => {\n  console.log(key + ': ' + user[key]);\n});
\n\n

Ventajas:

\n
    \n
  • Solo funciona con propiedades propias (no heredadas)
  • \n
  • Devuelve un array — se puede usar forEach, map, filter
  • \n
  • Código legible y predecible
  • \n
\n\n

Esta es mi forma favorita cuando solo necesito obtener una lista de claves y trabajar con ellas.

\n\n

3. Object.values() — cuando solo necesitas los valores

\n\n

A veces solo nos interesan los valores de las propiedades, sin las claves. Por ejemplo, para sumar o mostrar datos.

\n\n
const values = Object.values(user);\nconsole.log(values); // ['Ana', 28, 'Moscú', false]\n\nvalues.forEach(value => {\n  console.log(value);\n});
\n\n

El método apareció en ES2017 y es ideal para trabajar con colecciones de datos donde las claves no importan.

\n\n

4. Object.entries() — el rey entre los métodos

\n\n

Object.entries() devuelve un array de arrays, donde cada array anidado es un par [clave, valor]. Es una herramienta universal para recorrer un objeto en JavaScript.

\n\n
const entries = Object.entries(user);\nconsole.log(entries);\n// [\n//   ['name', 'Ana'],\n//   ['age', 28],\n//   ['city', 'Moscú'],\n//   ['isAdmin', false]\n// ]\n\nentries.forEach(([key, value]) => {\n  console.log(`${key}: ${value}`);\n});
\n\n

Observa la desestructuración en los parámetros de forEach: ([key, value]). Esto hace que el código sea limpio y conciso.

\n\n

Cuándo usarlo:

\n
    \n
  • Necesitas tanto claves como valores
  • \n
  • Quieres transformar el objeto en otra estructura (por ejemplo, en un Map)
  • \n
  • Escribes una función

Blogs

Book Recommendations