J'ai fait AJAX et le message validé sont renvoyés sous forme de tableau JSON. Par conséquent, je dois vérifier si les clés, comme name
et email
, sont dans ce tableau JSON.
{
"name": {
"isEmpty": "Value is required and can't be empty"
},
"email": {
"isEmpty": "Value is required and can't be empty"
}
}
Seulement si le nom de la clé est présent, j'ai besoin d'écrire un message d'erreur dans le champ name
.
Voici le code pour afficher une erreur si des champs sont entrés
if (obj['name']'isEmpty'] != "") {
$('#name').after(c1 + "<label class='error'>" + obj['name']['isEmpty'] + "</label>");
}
if (obj['email']['isEmpty'] != "" ) {
$('#email').after(c4 + "<label class='error'>" + obj['email']['isEmpty'] + "</label>");
}
Mais si le champ name
est entré, il ne sera pas dans le tableau JSON. Donc, la déclaration de vérification
if (obj['name']['isEmpty'] != "")
entraînera l'erreur suivante:
obj.name introuvable
Il n'est pas nécessaire d'avoir la clé name
dans le tableau. En même temps, je dois vérifier cela pour afficher l'erreur si le tableau possède la clé name
.
Utilisez la fonction hasOwnProperty()
de JavaScript:
if (json_object.hasOwnProperty('name')) {
//do struff
}
Pas besoin de JQuery tout simplement, vous pouvez le faire
if(yourObject['email']){
// what if this property exists.
}
comme avec toute valeur pour email
vous renverra true
, s'il n'y a pas une telle propriété ou que cette valeur de propriété est null
ou undefined
résultera en false
if(typeof theObject['key'] != 'undefined'){
//key exists, do stuff
}
//or
if(typeof theObject.key != 'undefined'){
//object exists, do stuff
}
J'écris ici parce que personne ne semble donner la bonne réponse ..
Je sais que c'est vieux ...
Quelqu'un pourrait remettre en question la même chose ..
si vous avez un tableau
var subcategories=[{name:"test",desc:"test"}];
function hasCategory(nameStr) {
for(let i=0;i<subcategories.length;i++){
if(subcategories[i].name===nameStr){
return true;
}
}
return false;
}
si vous avez un objet
var category={name:"asd",test:""};
if(category.hasOwnProperty('name')){//or category.name!==undefined
return true;
}else{
return false;
}