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 statische Methode Object.keys()
gibt ein Array der eigenen aufzählbaren, mit Zeichenfolgen indizierten Eigenschaftsnamen eines gegebenen Objekts zurück.
Probieren Sie es aus
Syntax
Object.keys(obj)
Parameter
obj
-
Ein Objekt.
Rückgabewert
Ein Array von Zeichenfolgen, das die eigenen aufzählbaren, mit Zeichenfolgen indizierten Eigenschaftsschlüssel des gegebenen Objekts darstellt.
Beschreibung
Object.keys()
gibt ein Array zurück, dessen Elemente Zeichenfolgen sind, die den aufzählbaren, mit Zeichenfolgen indizierten Eigenschaftsnamen entsprechen, die direkt auf dem object
gefunden werden. Dies ist das gleiche wie das Iterieren mit einer for...in
-Schleife, außer dass eine for...in
-Schleife auch Eigenschaften in der Prototypenkette aufzählt. 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 Eigenschaftswerte benötigen, verwenden Sie stattdessen Object.values()
. Wenn Sie sowohl die Eigenschaftsschlüssel als auch die Werte benötigen, verwenden Sie stattdessen 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 mit Zeichenfolgen indizierten eigenen Eigenschaften, einschließlich nicht aufzählbarer, benötigen, siehe Object.getOwnPropertyNames()
.
Verwendung von Object.keys() bei Primitiven
Nicht-Objekt-Argumente werden zu Objekten konvertiert. undefined
und null
können nicht zu Objekten konvertiert werden und werfen sofort einen TypeError
. Nur Zeichenfolgen können eigene aufzählbare Eigenschaften 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 hat das Übergeben eines Nicht-Objekts an Object.keys()
einen TypeError
ausgelöst.
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-object.keys |
Browser-Kompatibilität
BCD tables only load in the browser