Introduction
Dans ce laboratoire, nous allons explorer la manière de vérifier si une valeur cible existe dans un objet JSON à l'aide de JavaScript. Nous utiliserons la fonction hasKey() qui nous permet de vérifier séquentiellement les clés de l'objet pour déterminer si la valeur cible est présente. Ce laboratoire vous permettra de mieux comprendre comment travailler avec les objets JSON en JavaScript.
Fonction JavaScript pour Vérifier si un Objet a une Clé
Pour vérifier si une valeur cible existe dans un objet JavaScript, utilisez la fonction hasKey.
La fonction prend deux arguments : obj, l'objet JSON dans lequel chercher, et keys, un tableau de clés à vérifier. Voici les étapes pour vérifier si l'objet a la clé (ou les clés) donnée(s) :
- Vérifiez si le tableau
keysn'est pas vide. Si c'est le cas, renvoyezfalse. - Utilisez la méthode
Array.prototype.every()pour itérer sur le tableaukeyset vérifier séquentiellement chaque clé jusqu'à la profondeur interne deobj. - Utilisez la méthode
Object.prototype.hasOwnProperty()pour vérifier siobjn'a pas la clé actuelle ou n'est pas un objet. Si l'une de ces conditions est vraie, arrêtez la propagation et renvoyezfalse. - Sinon, affectez la valeur de la clé à
objpour l'utiliser dans l'itération suivante. - Si le tableau
keysa été entièrement itéré avec succès, renvoyeztrue.
Voici le code pour la fonction hasKey :
const hasKey = (obj, keys) => {
return (
keys.length > 0 &&
keys.every((key) => {
if (typeof obj !== "object" || !obj.hasOwnProperty(key)) return false;
obj = obj[key];
return true;
})
);
};
Voici quelques exemples d'utilisation de la fonction hasKey :
let obj = {
a: 1,
b: { c: 4 },
"b.d": 5
};
hasKey(obj, ["a"]); // true
hasKey(obj, ["b"]); // true
hasKey(obj, ["b", "c"]); // true
hasKey(obj, ["b.d"]); // true
hasKey(obj, ["d"]); // false
hasKey(obj, ["c"]); // false
hasKey(obj, ["b", "f"]); // false
Sommaire
Félicitations ! Vous avez terminé le laboratoire Vérifier si un objet a une clé. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.