JavaScript Object.keys, Values, Entries

En este capítulo, vamos a tratar sobre Object.keys, values, y entries. Ya hemos hablado sobre métodos como map.keys(), map.values(), map.entries().

Estos métodos son universales y se utilizan para estructuras de datos. Cada vez que se crea una estructura de datos, también deberían implementarse. Se utilizan principalmente para Map, Set, y Array.

Métodos similares son soportados por objetos simples, también. Solo la sintaxis difiere un poco.

Definiendo Object.keys, values, y entries

Como regla, para objetos simples, puedes usar los métodos a continuación:

  • Para devolver un arreglo de clave, se utiliza el método Object.keys(obj).
  • Para devolver un arreglo de valores, se utiliza el método Object.values(obj).
  • Para devolver un arreglo de pares [key, value], se utiliza el método Object.entries(obj).

Hay diferencias significativas en comparación con Map. Aquí también las cubriremos.

La primera distinción es que aquí necesitamos llamar a Object.keys(obj) pero no a obj.keys().

La razón principal es la versatilidad. Los Objetos son considerados la raíz de todas las estructuras complejas de JavaScript.

Entonces, teniendo un objeto como data, que puede realizar su propio método data.values(). Sin embargo, también puedes llamar a Object.values(data) en ese objeto. Otra diferencia esencial es que los métodos Object.* pueden devolver arreglos reales, no iterables.

Consideremos el siguiente ejemplo:

Javascript object
let user = { name: "Jane", age: 41 }; console.log(user.name); // Jane console.log(user.age); // 41

Entonces, en el ejemplo anterior, tenemos lo siguiente:

  • Object.keys(user) = ["name", "age"]
  • Object.values(user) = ["Jack", 35]
  • Object.entries(user) = [ ["name","Jack"], ["age",35] ]

Para recorrer los valores de las propiedades, puedes usar Object.values de esta manera:

Javascript object values
let user = { name: "Jane", age: 41 }; for (let value of Object.values(user)) { console.log(value); // Jane, then 41 }

Los métodos Object.keys/values/entries tienen una similitud con el bucle for..in: ambos ignoran las propiedades que aplican Symbol(...) como una clave.

En circunstancias en las que necesitas símbolos, puedes usar un método separado Object.getOwnPropertySymbols, que devuelve un arreglo que consta solo de claves simbólicas.

Transformación de Objetos

Por lo general, los objetos no obtienen los métodos que tienen los arreglos (por ejemplo, filter, map, y así sucesivamente).

Si deseas usarlos, puedes aplicar el método Object.entries, seguido de Object.fromEntries.

Aquí está la secuencia de acciones:

  1. Aplica Object.entries(obj) para obtener un arreglo de pares valor/clave de obj.
  2. Aplica los métodos de arreglo en el arreglo.
  3. Aplica Object.fromEntries(array) en el arreglo resultante para convertirlo de nuevo a un objeto.

Aquí hay un ejemplo:

Javascript object entries method
let points = { john: 22, ann: 20, jack: 14, }; let doublePoints = Object.fromEntries( // convert to array, map, and then fromEntries returns an object Object.entries(points).map(([key, value]) => [key, value * 2]) ); console.log(doublePoints.john); // 44

Este método permite realizar transformaciones robustas.

Hora del Cuestionario: ¡Pon a Prueba Tus Habilidades!

¿Listo para desafiar lo que has aprendido? Sumérgete en nuestros cuestionarios interactivos para una comprensión más profunda y una forma divertida de reforzar tu conocimiento.

¿Te resulta útil?