我可以使用'in'在一次比较中检查JSON数据结构中是否存在非顶级名称吗?
我有n层JSON数据结构,
我能做到:if(在jsonData中“mbled”),工作正常
对于较低层名称:
我可以做到这一点但是(但是当我更深入的时候工作但是变得笨重):if(jsonData中的“pnpenvsense1”和jsonData.pnpenvsense1中的“light”)
我更喜欢(不起作用,总是返回false):if(jsonData中的“pnpenvsense1.light”)
答案 0 :(得分:1)
类似的东西:
function objExists(path, struct){
path = path.split('.');
for(var i=0, l=path.length; i<l; i++){
if(!struct.hasOwnProperty(path[i])){ return false; }
struct = struct[path[i]];
}
return true;
}
objExists('pnpenvsense1.light', jsonData);
答案 1 :(得分:0)
尝试
//将检查它是否已定义且不是错误
if(pnpenvsense1.light !== undefined && pnpenvsense1.light != false )
{ // my code }
arr = new Array();
arr['myKey'] = 12;
arr['myOtherKey'] = { "first" : "yes" , "second" : false };
if(arr.myKey !== undefined && arr.myKey != false)
alert("1 -> " + arr.myKey);
if(arr.myOtherKey.first !== undefined && arr.myOtherKey.first != false)
alert("2 -> " + arr.myOtherKey.first);