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"); } } }