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

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

Patricia Arquette
Patricia ArquetteOriginal
2024-12-20 06:29:13416Durchsuche

How Can I Safely Check for the Existence of Nested Keys in JavaScript Objects?

Testen der Existenz verschachtelter JavaScript-Objektschlüssel

Die Überprüfung der Existenz von Eigenschaften innerhalb verschachtelter JavaScript-Objekte stellt eine Herausforderung dar, insbesondere wenn es um Potenzial geht null oder undefinierte Werte. Um dieses Problem anzugehen, sollten Sie einen schrittweisen Ansatz in Betracht ziehen, anstatt sich auf den riskanten und fehleranfälligen direkten Zugriff auf Eigenschaften zu verlassen.

Eine praktikable Lösung beinhaltet eine maßgeschneiderte Funktion, die das Vorhandensein mehrerer verschachtelter Ebenen testet. Diese Funktion mit dem eleganten Namen checkNested akzeptiert das Zielobjekt als erstes Argument, gefolgt von einer Reihe erwarteter verschachtelter Eigenschaftsnamen. Es prüft systematisch die Existenz jeder Eigenschaft und gibt „true“ zurück, wenn alle gefunden werden, andernfalls „false“.

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;
}

Beispielsweise bei gegebenem Objekt:

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

Aufruf von checkNested with the erwartet Ebenen gibt die erwarteten Ergebnisse zurück:

checkNested(test, 'level1', 'level2', 'level3'); // true
checkNested(test, 'level1', 'level2', 'foo'); // false

ES6 Optimierungen

Durch die Nutzung von ES6-Funktionen kann diese Funktion weiter optimiert werden, was zu einer präzisen und effizienten Implementierung führt. Rekursion und Tail-Call-Optimierung ergeben zusammen eine prägnante und dennoch leistungsstarke Lösung:

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

Wenn Ihr Ziel außerdem darin besteht, den Wert einer verschachtelten Eigenschaft abzurufen, anstatt nur deren Existenz zu testen, ist ein einfacherer Ansatz geeignet verfügbar:

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

const test = {
  level1: {
    level2: {
      level3: 'level3',
    },
  },
};
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
console.log(getNested(test, 'a', 'b')); // undefined

Durch die Nutzung dieser Techniken können Sie sicher durch die Komplexität verschachtelter JavaScript-Objekte navigieren und so die Robustheit und Zuverlässigkeit Ihrer JavaScript-Objekte sicherstellen Code.

Das obige ist der detaillierte Inhalt vonWie kann ich sicher 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!

Stellungnahme:
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