Object.keys()
El método estático Object.keys()
devuelve un arreglo de propiedades enumerables propias de un objeto dado.
Pruébalo
Sintaxis
Object.keys(obj)
Parámetros
obj
-
Un objeto.
Valor devuelto
Un arreglo de strings que representan todas las propiedades del objeto.
Descripción
Object.keys
devuelve un arreglo cuyos elementos son cadenas correspondientes a las propiedades enumerables que se encuentran directamente en el object
. Esto es lo mismo que iterar con un bucle for...in
, excepto que un bucle for...in
también enumera las propiedades en la cadena de prototipo. El orden del arreglo devuelto por Object.keys()
es el mismo que proporciona el bucle for...in
.
Si necesita los valores de la propiedad, use Object.values()
en su lugar. Si necesita ambos las claves de la propiedad como sus valores, use Object.entries()
en su lugar
Ejemplos
Usando Object.keys()
// Arreglo sencillo
const arr = ["a", "b", "c"];
console.log(Object.keys(arr)); // ['0', '1', '2']
// Arreglo como objeto
const obj = { 0: "a", 1: "b", 2: "c" };
console.log(Object.keys(obj)); // ['0', '1', '2']
// arreglo como objeto con nombres ordenados aleatoriamente
const anObj = { 100: "a", 2: "b", 7: "c" };
console.log(Object.keys(anObj)); // ['2', '7', '100']
// getFoo es una propiedad no enumerable
const myObj = Object.create(
{},
{
getFoo: {
value() {
return this.foo;
},
},
},
);
myObj.foo = 1;
console.log(Object.keys(myObj)); // ['foo']
Si quieres todas las propiedades, incluso las no enumerables, mira Object.getOwnPropertyNames()
.
Usando Object.keys() en primitivos
Los argumentos que no son objetos son objetos forzados. Únicamente las cadenas pueden tener propiedades enumerables propias, mientras que todas las demás primitivas devuelven un arreglo vacío.
// Las cadenas de texto tienen índices como propiedades propias enumerables
console.log(Object.keys("foo")); // ['0', '1', '2']
// Otros primitivos no tienen propiedas propias
console.log(Object.keys(100)); // []
Nota:
En ES5, si el argumento para Object.keys()
no es un objeto, causará TypeError
.
Especificaciones
Specification |
---|
ECMAScript Language Specification # sec-object.keys |
Compatibilidad con navegadores
BCD tables only load in the browser