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.
Die Object.keys()
statische Methode gibt ein Array der aufzählbaren, direkt auf dem Objekt vorhandenen, eigenen Property-Namen des angegebenen Objekts zurück.
Probieren Sie es aus
const object1 = {
a: "somestring",
b: 42,
c: false,
};
console.log(Object.keys(object1));
// Expected output: Array ["a", "b", "c"]
Syntax
Object.keys(obj)
Parameter
obj
-
Ein Objekt.
Rückgabewert
Ein Array von Strings, die die eigenen aufzählbaren Property-Schlüssel des angegebenen Objekts darstellen.
Beschreibung
Object.keys()
gibt ein Array zurück, dessen Elemente Strings sind, die den aufzählbaren, direkt auf dem object
vorhandenen eigenen Property-Namen entsprechen. Dies entspricht dem Iterieren mit einer for...in
Schleife, mit dem Unterschied, dass eine for...in
Schleife auch über die Prototypenkette iteriert. Die Reihenfolge des von Object.keys()
zurückgegebenen Arrays ist die gleiche wie die, die von einer for...in
Schleife bereitgestellt wird.
Wenn Sie die Property-Werte benötigen, verwenden Sie stattdessen Object.values()
. Wenn Sie sowohl Property-Schlüssel als auch Werte benötigen, verwenden Sie Object.entries()
.
Beispiele
Verwendung von Object.keys()
// Basic array
const arr = ["a", "b", "c"];
console.log(Object.keys(arr)); // ['0', '1', '2']
// Array-like object
const obj = { 0: "a", 1: "b", 2: "c" };
console.log(Object.keys(obj)); // ['0', '1', '2']
// Array-like object with random key ordering
const anObj = { 100: "a", 2: "b", 7: "c" };
console.log(Object.keys(anObj)); // ['2', '7', '100']
// getFoo is a non-enumerable property
const myObj = Object.create(
{},
{
getFoo: {
value() {
return this.foo;
},
},
},
);
myObj.foo = 1;
console.log(Object.keys(myObj)); // ['foo']
Wenn Sie alle string-keyed eigenen Propertys möchten, einschließlich nicht-auflösbarer, sehen Sie sich Object.getOwnPropertyNames()
an.
Verwendung von Object.keys() auf Primitiven
Nicht-Objekt-Argumente werden in Objekte umgewandelt. undefined
und null
können nicht in Objekte umgewandelt werden und werfen sofort einen TypeError
. Nur Strings können eigene aufzählbare Propertys haben, während alle anderen Primitiven ein leeres Array zurückgeben.
// Strings have indices as enumerable own properties
console.log(Object.keys("foo")); // ['0', '1', '2']
// Other primitives except undefined and null have no own properties
console.log(Object.keys(100)); // []
Hinweis:
In ES5 führte das Übergeben eines Nicht-Objekts an Object.keys()
zu einem TypeError
.
Spezifikationen
Specification |
---|
ECMAScript® 2025 Language Specification # sec-object.keys |