Heim > Web-Frontend > js-Tutorial > Wie kann ich effizient prüfen, ob in einem JavaScript-Objekt verschachtelte Schlüssel vorhanden sind?

Wie kann ich effizient prüfen, ob in einem JavaScript-Objekt verschachtelte Schlüssel vorhanden sind?

Linda Hamilton
Freigeben: 2025-01-01 07:09:11
Original
634 Leute haben es durchsucht

How Can I Efficiently Check for the Existence of Nested Keys in a JavaScript Object?

Vorhandensein verschachtelter JavaScript-Objektschlüssel testen

Bei der Inspektion tief verschachtelter JavaScript-Objekte kann die Prüfung auf das Vorhandensein bestimmter Schlüssel zu einer Herausforderung werden. Der Standardansatz umfasst sequentielle Prüfungen, die jedoch sowohl umständlich als auch fehleranfällig sein können.

Eine robustere Lösung besteht darin, rekursive Funktionen zu verwenden, die Schritt für Schritt durch die Objektstruktur navigieren. Zum Beispiel:

function checkNested(obj, ...levels) {
  for (var i = 0; i < levels.length; i++) {
    if (!obj || !obj.hasOwnProperty(levels[i])) {
      return false;
    }
    obj = obj[levels[i]];
  }
  return true;
}
Nach dem Login kopieren

Diese Funktion akzeptiert ein Objekt und eine beliebige Anzahl von Ebenen als Argumente. Es durchläuft die Ebenen, prüft, ob jeder entsprechende Schlüssel vorhanden ist, und erhöht den Objektzeiger. Wenn ein Schlüssel fehlt oder das Objekt undefiniert ist, wird false zurückgegeben. andernfalls wird „true“ zurückgegeben.

Beispielverwendung:

const test = { level1: { level2: { level3: 'level3' } } };

checkNested(test, 'level1', 'level2', 'level3'); // true
checkNested(test, 'level1', 'level2', 'foo'); // false
Nach dem Login kopieren

Alternativ kann ES6 genutzt werden, um die rekursive Funktion zu vereinfachen:

function checkNested(obj, level, ...rest) {
  if (obj === undefined) return false;
  if (rest.length == 0 && obj.hasOwnProperty(level)) return true;
  return checkNested(obj[level], ...rest);
}
Nach dem Login kopieren

Jedoch, um die abzurufen Für den Wert einer tief verschachtelten Eigenschaft kann eine einzeilige Funktion verwendet werden:

function getNested(obj, ...args) {
  return args.reduce((obj, level) => obj && obj[level], obj);
}

console.log(getNested(test, 'level1', 'level2', 'level3')); // 'level3'
console.log(getNested(test, 'level1', 'level2', 'level3', 'length')); // 6
console.log(getNested(test, 'level1', 'level2', 'foo')); // undefined
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich effizient prüfen, ob in einem JavaScript-Objekt verschachtelte Schlüssel vorhanden sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage