Object.keys()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

El método estático Object.keys() devuelve un arreglo de propiedades enumerables propias de un objeto dado.

Pruébalo

const object1 = {
  a: "somestring",
  b: 42,
  c: false,
};

console.log(Object.keys(object1));
// Expected output: Array ["a", "b", "c"]

Sintaxis

js
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()

js
// 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.

js
// 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® 2025 Language Specification
# sec-object.keys

Compatibilidad con navegadores

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
keys

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Véase también