例如,这是我正在处理的对象的值:
object = {"message":"success","dataList":{"state":"error","count":"25"}}
我知道要检查密钥"消息"存在,我可以做到以下几点:
if(object['message']){
//"message" exists. do stuff.
} else{
//"message" does not exist
}
如何检查"状态"是否存在或"计数"虽然?
答案 0 :(得分:3)
if(object['dataList']['state']){
// dataList["state"] exists. do stuff.
} else {
// dataList["state"] does not exist
}
或(在我看来)更具可读性:
if(object.dataList.state){ ... }
编辑:检查所有父对象也是一个好主意,这样当对象上不存在dataList
时,您就不会收到意外错误:
if (object && object.dataList && object.dataList.state)
答案 1 :(得分:0)
尝试这样:
object = {"message":"success","dataList":{"state":"error","count":"25"}};
if(object.message =='success'){
console.log(object.dataList);// your datalist object here use it
console.log(object.dataList.state);
console.log(object.dataList.count);
} else{
//"message" does not exist
}
如果你想检查状态,请执行以下操作:
if(typeof(object.dataList.state) !='undefined' && object.dataList.state.length > 0){
// dataList.state exists. do stuff.
} else {
// dataList.state does not exist
}
答案 2 :(得分:0)
首先,如果要检查属性是否存在,则应使用if ('message' in object)
。如果您使用if (object['message'])
,则对于案例object = {'message': null}
,结果是错误的。
在您的问题中,对象嵌套在两个层中。如果有两个以上,您可以尝试使用递归的通用解决方案:
function findProperty (obj, key) {
if (typeof obj === "object") {
if (key in obj) return true;
var childReturned = false;
for (k in obj) {
childReturned = findProperty(obj[k], key);
if (childReturned) return true;
}
}
return false;
}
var obj = {"message":"success","dataList":{"state":"error","count":"25"}};
findProperty(obj, 'message'); // => true
findProperty(obj, 'dataList'); // => true
findProperty(obj, 'state'); // => true
findProperty(obj, 'count'); // => true
答案 3 :(得分:0)
if (object.dataList.state || object.dataList.count) {
// ...
}