Ответ 1
использовать javascript hasOwnProperty,
if(json_object.hasOwnProperty('name')){
//do struff
}
Я сделал проверку AJAX, и подтвержденное сообщение возвращается как массив JSON. Поэтому мне нужно проверить, находятся ли в этом массиве JSON ключи, такие как name
и email
.
{"name":{"isEmpty":"Value is required and can't be empty"},
"email":{"isEmpty":"Value is required and can't be empty"}}
Только если имя ключа присутствует, мне нужно написать сообщение об ошибке в поле name
.
Ниже приведен код для отображения ошибки, если введены поля
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>");
}
Но если ввести поле name
, оно не будет в массиве JSON.
Таким образом, инструкция проверки if(obj['name']['isEmpty']!="")
приведет к ошибке obj.name not found
.
Нет необходимости иметь ключ name
в массиве. В то же время мне нужно проверить, чтобы это отображало ошибку, если массив имеет ключ name
.
использовать javascript hasOwnProperty,
if(json_object.hasOwnProperty('name')){
//do struff
}
Нет необходимости в JQuery, просто вы можете сделать
if(yourObject['email']){
// what if this property exists.
}
как и любое значение для email
, вернет вас true
, если такого свойства нет или значение свойства null
или undefined
приведет к false
if(typeof theObject['key'] != 'undefined'){
//key exists, do stuff
}
//or
if(typeof theObject.key != 'undefined'){
//object exists, do stuff
}
Я пишу здесь, потому что никто, кажется, не дает правильного ответа.
Я знаю это старый...
Кто-то может подвергнуть сомнению одно и то же.
если у вас есть массив
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;
}
если у вас есть объект
var category={name:"asd",test:""};
if(category.hasOwnProperty('name')){//or category.name!==undefined
return true;
}else{
return false;
}