Heim > Web-Frontend > js-Tutorial > Wie kann ich zuverlässig prüfen, ob in JavaScript-Objekten verschachtelte Schlüssel vorhanden sind?

Wie kann ich zuverlässig prüfen, ob in JavaScript-Objekten verschachtelte Schlüssel vorhanden sind?

Linda Hamilton
Freigeben: 2024-12-20 17:43:09
Original
373 Leute haben es durchsucht

How Can I Robustly Check for Nested Key Existence in JavaScript Objects?

Testen auf das Vorhandensein verschachtelter JavaScript-Objektschlüssel

Beim Umgang mit komplexen JavaScript-Objekten mit verschachtelten Eigenschaften kann es schwierig sein, das Vorhandensein eines verschachtelten Schlüssels zu ermitteln. Im Folgenden finden Sie eine ausführliche Untersuchung der Best Practices zum Testen der Existenz verschachtelter Objektschlüssel.

Der traditionelle Ansatz besteht, wie in der Frage gezeigt, darin, jede Ebene des verschachtelten Objekts nacheinander zu überprüfen:

if (test.level1 && test.level1.level2 && test.level1.level2.level3) {
    alert(test.level1.level2.level3);
}
Nach dem Login kopieren

Dieser Ansatz ist jedoch anfällig für Ausnahmen, wenn nicht vorhandene Eigenschaften angetroffen werden.

Lösung: Iterative Existenz Prüfer

Für eine verbesserte Robustheit besteht eine geeignetere Lösung darin, eine Funktion zu erstellen, die iterativ die Existenz verschachtelter Eigenschaften überprüft, ohne Ausnahmen auszulösen:

function checkNested(obj, ...args) {
  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 akzeptiert eine beliebige Anzahl von Eigenschaftsnamen als Argumente und gibt true zurück, wenn alle davon im verschachtelten Objekt vorhanden sind. Zum Beispiel:

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

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

ES6 Solutions

ES6 bietet prägnantere und elegantere Optionen zur Existenzprüfung:

1. Schwanzrekursive Funktion:

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

2. Reduzierbasierte Funktion:

Um den Wert einer verschachtelten Eigenschaft abzurufen, können Sie diese einzeilige Funktion verwenden:

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

Zum Beispiel:

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

Das obige ist der detaillierte Inhalt vonWie kann ich zuverlässig prüfen, ob in JavaScript-Objekten 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