Heim > Web-Frontend > js-Tutorial > Wie kann man effizient prüfen, ob ein verschachtelter JavaScript-Objektschlüssel vorhanden ist?

Wie kann man effizient prüfen, ob ein verschachtelter JavaScript-Objektschlüssel vorhanden ist?

Linda Hamilton
Freigeben: 2024-12-19 09:17:10
Original
150 Leute haben es durchsucht

How to Efficiently Check for Nested JavaScript Object Key Existence?

Verschachtelter JavaScript-Objektschlüsselexistenztest

Das Identifizieren der Existenz tief verschachtelter Objekteigenschaften kann eine Herausforderung sein. Beim Versuch, die Punktnotation für den Zugriff auf einen mehrstufigen Schlüssel zu verwenden, können Fehler auftreten, wenn eine Zwischenebene undefiniert oder null ist.

Bestehender Ansatz:

Ein gängiger Ansatz besteht darin, mithilfe von Bedingungsanweisungen manuell jede Ebene des verschachtelten Objekts zu überprüfen und sicherzustellen, dass jede Ebene vorhanden ist, bevor auf den gewünschten Schlüssel zugegriffen wird. Allerdings kann diese Methode bei tief verschachtelten Objekten mühsam und fehleranfällig werden.

Bessere Option:

Eine robustere Lösung besteht darin, eine Funktion zu erstellen, die das rekursiv überprüft Existenz verschachtelter Schlüssel. Die Funktion verwendet das Objekt und eine Reihe von Ebenennamen als Argumente und durchläuft jede Ebene, wobei sie überprüft, ob sie existiert und ihr Wert nicht undefiniert oder null ist.

Funktionsimplementierung:

Hier ist eine Schritt-für-Schritt-Funktionsimplementierung:

function checkNested(obj /*, level1, level2, ... levelN*/) {
  var args = Array.prototype.slice.call(arguments, 1);

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

Diese Funktion gibt „true“ zurück, wenn alle angegebenen Ebenen vorhanden sind, und „false“. andernfalls.

ES6-Update:

In ES6 ist eine prägnantere Version dieser Funktion mithilfe von Rekursion und Tail-Call-Optimierung möglich:

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

Beispielverwendung:

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

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

Wert Abruf (ES6):

Zusätzlich kann zum Abrufen des Werts einer verschachtelten Eigenschaft die folgende einzeilige Funktion verwendet werden:

function getNested(obj, ...args) {
  return args.reduce((obj, level) => obj && obj[level], obj)
}
Nach dem Login kopieren

Beispiel:

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

Das obige ist der detaillierte Inhalt vonWie kann man effizient prüfen, ob ein verschachtelter JavaScript-Objektschlüssel vorhanden ist?. 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