我已经完成了AJAX验证,并且验证的消息作为JSON数组返回。因此,我需要检查密钥,如name
和email
是否在该JSON数组中。
{
"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
没有必要在数组中使用键name
。同时,我需要检查这个,以便在数组拥有密钥name
时显示错误。
答案 0 :(得分:84)
使用JavaScript的hasOwnProperty()
功能:
if (json_object.hasOwnProperty('name')) {
//do struff
}
答案 1 :(得分:16)
只需要你可以做
就不需要JQueryif(yourObject['email']){
// what if this property exists.
}
email
的任何值都会返回true
,如果没有此类属性或属性值为null
或undefined
将导致{{1} }}
答案 2 :(得分:12)
if(typeof theObject['key'] != 'undefined'){
//key exists, do stuff
}
//or
if(typeof theObject.key != 'undefined'){
//object exists, do stuff
}
我在这里写作,因为似乎没有人给出正确答案。
我知道它已经老了...
有人可能质疑同样的事情......
答案 3 :(得分:3)
如果你有一个数组
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;
}