Test de l'existence de clés d'objets JavaScript imbriquées
Lors de l'inspection d'objets JavaScript profondément imbriqués, vérifier la présence de clés spécifiques peut devenir un défi. L'approche standard implique des vérifications séquentielles, mais cela peut être à la fois fastidieux et sujet à des erreurs.
Une solution plus robuste consiste à utiliser des fonctions récursives qui parcourent la structure de l'objet étape par étape. Par exemple :
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; }
Cette fonction prend un objet et un nombre arbitraire de niveaux comme arguments. Il parcourt les niveaux, vérifie si chaque clé correspondante existe et incrémente le pointeur d'objet. Si une clé est manquante ou si l'objet n'est pas défini, il renvoie false ; sinon, il renvoie vrai.
Exemple d'utilisation :
const test = { level1: { level2: { level3: 'level3' } } }; checkNested(test, 'level1', 'level2', 'level3'); // true checkNested(test, 'level1', 'level2', 'foo'); // false
Alternativement, ES6 peut être exploité pour simplifier la fonction récursive :
function checkNested(obj, level, ...rest) { if (obj === undefined) return false; if (rest.length == 0 && obj.hasOwnProperty(level)) return true; return checkNested(obj[level], ...rest); }
Cependant, pour récupérer le valeur d'une propriété profondément imbriquée, une fonction sur une ligne peut être utilisée :
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
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!