Heim >Web-Frontend >js-Tutorial >Wie kann ich sicher prüfen, ob in JavaScript-Objekten verschachtelte Schlüssel vorhanden sind?
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!