Javascript – 无法确定JSON对象是否包含true

我有一个JSON对象,我从服务器检索,有时它真的很简单,如:

{ "urls": ["http://google.com", "http://bing.com"] } 

不过,我需要检查如果urls['tasks']['ipv6']包含true,我使用的代码是:

 if (urls['tasks']['ipv6'] === true) { console.log('true'); } 

但是,因为urls ['tasks']不存在,我得到以下错误:

 Uncaught TypeError: Cannot read property 'ipv6' of undefined 

是否有捷径可寻? 我很难在网上find解决scheme。 我也试过jQuery的$ .isEmptyObject,并会很高兴与基于jQuery的解决scheme。 作为参考,我实际上在node.js中使用这个代码。

这应该为你做的伎俩。

 if (urls["tasks"] && urls["tasks"]["ipv6"] && urls["tasks"]["ipv6"] === true) { ... } 

如果你需要的话,你可以在左边添加urls ,你可以省略中间的urls["tasks"]["ipv6"] ,因为如果它undefined那肯定是不true

问题是你必须首先检查是否存在高级属性,然后再进行下钻。 而且,由于Javascript(以及大多数当今的语言)不使用完整的布尔进化,这个工作。

 if (urls && urls["tasks"] && urls["tasks"]["ipv6"] === true) { console.log("true"); } 

检查之前,检查typeof真正或错误…

if(typeof(urls['tasks']) != "undefined") { if(typeof(urls['tasks']['ipv6']) != "undefined") { if(urls['tasks']['ipv6'] === true) { console.log("I am true & I exist"); } } }
if(typeof(urls['tasks']) != "undefined") { if(typeof(urls['tasks']['ipv6']) != "undefined") { if(urls['tasks']['ipv6'] === true) { console.log("I am true & I exist"); } } }