HOWTO · JavaScript
Schlüssel eines JavaScript-Objekts abrufen
In diesem Tutorial wird beschrieben, wie Sie den Schlüssel eines Objekts in Javascript abrufen.
Auf dieser Seite
Mit Object.keys(obj) erhältst du ein Array mit den Namen der eigenen, aufzählbaren String-Eigenschaften eines Objekts. Verwende Object.entries(obj), wenn jeder Schlüssel zusammen mit seinem Wert erhalten bleiben soll. Beide Methoden lassen das Objekt unverändert. Für eine Schleife, die auch geerbte aufzählbare Eigenschaften durchlaufen kann, verwende for...in und filtere bei Bedarf nach eigenen Eigenschaften.
Objektschlüssel mit Object.keys() ermitteln
Object.keys() gibt ein Array mit den eigenen, aufzählbaren String-Schlüsseln eines Objekts zurück. Das ist nützlich, wenn die Eigenschaftsnamen nicht im Voraus bekannt sind, etwa beim Verarbeiten eines von einer API zurückgegebenen Datensatzes. Das Array enthält nur die Namen; einen Wert liest du mit obj[key] aus. Hat ein Objekt keine eigenen aufzählbaren String-Eigenschaften, ist das Ergebnis ein leeres Array. Symbol-Eigenschaften sind nicht enthalten.
Die Reihenfolge der Eigenschaften ist festgelegt, entspricht aber nicht immer der Reihenfolge, in der die Schlüssel geschrieben wurden. Array-Index-Schlüssel (kanonische ganzzahlige Index-Strings von 0 bis 4294967294) stehen zuerst und sind numerisch aufsteigend sortiert. Andere String-Schlüssel folgen in der Reihenfolge, in der die Eigenschaften erstellt wurden. Ein String wie "01" ist kein Array-Index und bleibt daher bei den übrigen String-Schlüsseln. Für Arrays gilt dasselbe: Object.keys() gibt die vorhandenen aufzählbaren Index-Schlüssel als Strings zurück, nicht die Array-Werte.
Führe dieses Beispiel aus:
const record = { 4: 'pear', 2: 'mango', name: 'fruit', '01': 'label' };
const keys = Object.keys(record);
console.log(keys);
console.log(record[keys[0]]);
console.log(Object.keys(['red', 'blue']));
Dieses Beispiel zeigt numerische Index-Schlüssel vor den übrigen Strings, belässt "01" zwischen den gewöhnlichen String-Schlüsseln und verwendet einen zurückgegebenen Schlüssel, um den zugehörigen Wert auszulesen. Das Ermitteln der Schlüssel sortiert oder ändert die Eigenschaften in record nicht.
Objektschlüssel und Werte mit Object.entries() ermitteln
Verwende Object.entries(obj), wenn der nächste Schritt jeden Schlüssel zusammen mit seinem zugehörigen Wert benötigt. Die Methode gibt ein Array aus zweielementigen Arrays zurück, etwa in der Form [[key, value], ...]. Wie Object.keys() berücksichtigt sie nur die eigenen, aufzählbaren String-Eigenschaften des Objekts, verwendet dieselbe Reihenfolge und lässt Symbole aus. Werte, die selbst Objekte sind, werden nicht rekursiv durchlaufen.
Mit Destrukturierung lässt sich jedes Paar bequem verarbeiten. Das folgende vollständige Beispiel gibt für jede Eigenschaft eine Bezeichnung und ihren Wert aus:
const settings = { theme: 'dark', language: 'English' };
for (const [key, value] of Object.entries(settings)) {
console.log(`${key}: ${value}`);
}
Wenn die Namen allein genügen, wähle Object.keys(); braucht die Schleife Namen und Werte zusammen, wähle Object.entries(). Ist ein Schlüssel bereits bekannt, musst du das Objekt nicht aufzählen. Greife direkt auf den Wert zu, zum Beispiel mit settings.theme oder settings['theme'].
Objektschlüssel mit for…in durchlaufen
Eine for...in-Schleife durchläuft aufzählbare String-Eigenschaften. Dabei kann sie auch Eigenschaften einbeziehen, die über den Prototyp des Objekts geerbt wurden. Daher kann ihr Ergebnis von Object.keys() abweichen, das nur eigene Eigenschaften auflistet. Wenn geerbte Eigenschaften ausgeschlossen werden sollen, verwende in der Schleife Object.hasOwn(obj, key). Diese Methode ist in modernem JavaScript verfügbar; für ältere Umgebungen kannst du Object.prototype.hasOwnProperty.call(obj, key) verwenden.
const parent = { category: 'fruit' };
const item = Object.create(parent);
item.name = 'mango';
for (const key in item) {
if (Object.hasOwn(item, key)) {
console.log(`${key}: ${item[key]}`);
}
}
Die Schleife kann sowohl name als auch das geerbte category vorfinden, während die Prüfung auf eigene Eigenschaften nur name ausgibt. Wenn du alle aufzählbaren Eigenschaften möchtest, lass die Prüfung weg. Für eine vorhersagbare Liste der eigenen aufzählbaren String-Schlüssel eines Objekts ist Object.keys() meist die klarste Wahl.
Die Enumeration erfolgt nur eine Ebene tief. Enthält eine Eigenschaft der obersten Ebene ein weiteres Objekt, enthält die Schlüsselliste den Namen dieser Eigenschaft; ihr Wert bleibt das verschachtelte Objekt. Um dessen Schlüssel aufzulisten, rufe Object.keys() separat für diesen Wert auf. Eine rekursive Durchsuchung erfordert zusätzliche Logik, die jedes verschachtelte Objekt durchläuft. Wähle je nach benötigten Eigenschaften zwischen den drei Ansätzen: Object.keys() für Namen, Object.entries() für Schlüssel-Wert-Paare und for...in für aufzählbare Eigenschaften entlang der Prototypkette.