Maison >interface Web >js tutoriel >Comment puis-je vérifier en toute sécurité l'existence de clés imbriquées dans les objets JavaScript ?
Test de l'existence de clés d'objets JavaScript imbriqués
Vérifier l'existence de propriétés au sein d'objets JavaScript imbriqués pose un défi, en particulier face à des potentiels valeurs nulles ou non définies. Pour résoudre ce problème, envisagez d'utiliser une approche étape par étape au lieu de vous fier à un accès direct à la propriété, risqué et sujet aux erreurs.
Une solution viable implique une fonction sur mesure qui teste la présence de plusieurs niveaux imbriqués. Cette fonction, élégamment nommée checkNested, accepte l'objet cible comme premier argument, suivi d'une série de noms de propriétés imbriqués attendus. Il vérifie systématiquement l'existence de chaque propriété, renvoyant vrai si toutes sont trouvées et faux sinon.
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; }
Par exemple, étant donné l'objet :
var test = { level1: { level2: { level3: 'level3', }, }, };
Appel de checkNested avec l'attendu niveaux renvoie les résultats attendus :
checkNested(test, 'level1', 'level2', 'level3'); // true checkNested(test, 'level1', 'level2', 'foo'); // false
ES6 Optimisations
L'exploitation des fonctionnalités d'ES6 peut rationaliser davantage cette fonction, ce qui entraîne une mise en œuvre concise et efficace. La récursivité et l'optimisation des appels de fin se combinent pour créer une solution succincte mais puissante :
function checkNested(obj, level, ...rest) { if (obj === undefined) return false; if (rest.length == 0 && obj.hasOwnProperty(level)) return true; return checkNested(obj[level], ...rest); }
De plus, si votre objectif est de récupérer la valeur d'une propriété imbriquée au lieu de simplement tester son existence, une approche plus simple consiste à disponible :
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
En tirant parti de ces techniques, vous pouvez naviguer dans les complexités des objets JavaScript imbriqués en toute confiance, garantissant ainsi la robustesse et la fiabilité de votre code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!