Comment déterminer si un certain champ existe dans les données JSON transmises ?
1.obj["key"] != undefined
Ceci est défectueux Si la clé est définie, elle sera très 2. La mission n'est pas définie, alors il y aura un problème avec cette phrase.
2.!("key" in obj)
3.obj.hasOwnProperty("key")
Ces deux méthodes sont meilleures et recommandées.
Réponse originale :
En fait, vérifier le caractère indéfini n'est pas un moyen précis de tester si une clé existe. Que se passe-t-il si la clé existe mais que la valeur est réellement indéfinie ? 🎜>var obj = { key: undefined };
obj["key"] != undefined // false, mais la clé existe !
Vous devriez plutôt utiliser l'opérateur in :
"key" dans obj // true, quelle que soit la valeur réelle
Si vous souhaitez vérifier si une clé n'existe pas, pensez à utiliser des parenthèses :
!("key " in obj) // true si "key" n'existe pas dans l'objet
!"key" in obj // ERREUR ! Equivalent à "false in obj"
Ou, si vous voulez particulièrement teste les propriétés de l'instance d'objet (et non les propriétés héritées), usehasOwnProperty :
obj.hasOwnProperty("key") // true