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