Los métodos Object.keys()
, Object.values()
, y Object.entries()
son métodos estáticos del objeto global Object
que permiten extraer información sobre la composición de los objetos.
Como sabemos, hemos visto, los objetos en JavaScript son estructuras de datos que nos permiten almacenar y organizar datos en pares clave-valor.
Con estos métodos, podemos obtener información sobre las claves, valores y pares clave-valor de un objeto que componen el objeto, para su manipulación posterior.
- Object.keys(): Devuelve un array de claves.
- Object.values(): Devuelve un array de valores
- Object.entries(): Devuelve un array de pares clave-valor.
Uso de los métodos
El uso de estos métodos es muy sencillo, simplemente llamaríamos a cada uno de ellos de esta forma,
Object.keys(obj)
Object.values(obj)
Object.entries(obj)
- obj: El objeto del cual se desea obtener las claves.
- Orden de las propiedades: Los métodos devuelven los elementos en el orden en que las propiedades se agregan al objeto (pero en general, no te fies de ello)
- Enumerabilidad: Solo las propiedades enumerables aparecen en el resultado.
Vamos a ver cada uno de ellos en detalle 👇
Método Object.keys()
El método Object.keys()
devuelve un array con los nombres de las propiedades enumerables de un objeto. La lista de claves se devuelve en el mismo orden en que se producen en un bucle for...in
sobre el objeto.
Lo vemos mejor con un ejemplo. Supongamos el siguiente objeto:
const persona = {
nombre: "Ana",
edad: 25,
ciudad: "Madrid"
};
Para obtener las claves de este objeto:
const claves = Object.keys(persona);
console.log(claves); // ["nombre", "edad", "ciudad"]
Ejemplos prácticos
Iterar sobre propiedades
Puedes utilizar Object.keys()
para iterar sobre las claves de un objeto en un bucle forEach
o un bucle for...of
.
Object.keys(persona).forEach(clave => {
console.log(`${clave}: ${persona[clave]}`);
});
Filtrar propiedades
Puedes filtrar claves específicas basadas en ciertos criterios.
const clavesMayoresDe4Letras = Object.keys(persona).filter(clave => clave.length > 4);
console.log(clavesMayoresDe4Letras); // ["nombre", "ciudad"]
Método Object.values()
El método Object.values()
devuelve un array con los valores de las propiedades enumerables de un objeto. El orden de los valores coincide con el orden de las claves.
Siguiendo con nuestro ejemplo, si utilizamos el mismo objeto persona
:
const valores = Object.values(persona);
console.log(valores); // ["Ana", 25, "Madrid"]
Ejemplos prácticos
Obtener un array de valores
Ideal para obtener un array de valores si solo necesitas trabajar con ellos y no con las claves.
const valoresDeEdadYCiudad = Object.values(persona).slice(1, 3);
console.log(valoresDeEdadYCiudad); // [25, "Madrid"]
Manipular datos
Puedes aplicar métodos de array como map
, filter
, o reduce
directamente sobre los valores de un objeto.
const longitudDeValores = Object.values(persona).map(valor => valor.toString().length);
console.log(longitudDeValores); // [3, 2, 7]
Método Object.entries()
El método Object.entries()
devuelve un array de pares clave-valor en forma de arrays anidados. Cada sub-array contiene dos elementos: el nombre de la propiedad y su valor.
Es decir, que si lo aplicamos a nuestro ejemplo de persona
, tendríamos lo siguiente:
const entradas = Object.entries(persona);
console.log(entradas);
// [["nombre", "Ana"], ["edad", 25], ["ciudad", "Madrid"]]
Ejemplos prácticos
Iterar sobre pares clave-valor
Puedes usar Object.entries()
en un bucle for...of
para obtener tanto la clave como el valor de cada propiedad.
for (const [clave, valor] of Object.entries(persona)) {
console.log(`${clave}: ${valor}`);
}
Transformar objetos
Puedes usar Object.entries()
para transformar objetos en otros formatos, como arrays de objetos.
const arrayDeObjetos = Object.entries(persona).map(([clave, valor]) => ({ clave, valor }));
console.log(arrayDeObjetos);
// [{ clave: "nombre", valor: "Ana" }, { clave: "edad", valor: 25 }, { clave: "ciudad", valor: "Madrid" }]