Comment déterminer si un certain champ existe dans les données JSON transmises ?
1.obj["key"] != non défini
Ceci est défectueux. Si la clé est définie et que la valeur est très souvent indéfinie, alors il y aura un problème avec cette phrase.
2.!("clé" dans 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 = { clé : non définie};
obj["key"] != undefined // false, mais la clé existe !
Vous devriez plutôt utiliser l'opérateur in :
"key" in 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) // vrai si "key" n'existe pas dans l'objet
!"key" dans obj // ERREUR ! Équivalent à "false in obj"
Ou, si vous souhaitez tester particulièrement les propriétés de l'instance d'objet (et non les propriétés héritées), usehasOwnProperty :
obj.hasOwnProperty("key") // vrai