Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-无法确定JSON对象是否包含true_Javascript_Jquery_Json_Node.js - Fatal编程技术网

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

Javascript-无法确定JSON对象是否包含true,javascript,jquery,json,node.js,Javascript,Jquery,Json,Node.js,我有一个从服务器检索的JSON对象,有时它非常简单,例如: { "urls": ["http://google.com", "http://bing.com"] } 但是,我需要检查URL['tasks']['ipv6']是否包含true,我使用的代码是: if (urls['tasks']['ipv6'] === true) { console.log('true'); } 但是由于URL['tasks']不存在,我得到以下错误: Uncaught TypeError: Cannot

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

{ "urls": ["http://google.com", "http://bing.com"] }
但是,我需要检查URL['tasks']['ipv6']是否包含true,我使用的代码是:

if (urls['tasks']['ipv6'] === true) {
  console.log('true');
}
但是由于URL['tasks']不存在,我得到以下错误:

Uncaught TypeError: Cannot read property 'ipv6' of undefined

有没有一个简单的方法可以做到这一点?我真的很难在网上找到解决方案。我还尝试了jQuery的$.isEmptyObject,并对基于jQuery的解决方案感到满意。作为参考,我实际上在node.js中使用了这段代码。

这应该可以帮到你

if (urls["tasks"] && urls["tasks"]["ipv6"] && urls["tasks"]["ipv6"] === true)
{
    ...
}
如果需要,您也可以在左侧添加URL检查,也可以省略中间的检查URL[tasks][ipv6],因为如果未定义,则肯定不是这样


问题是,在向下钻取之前,必须首先检查上层属性是否存在。而且,由于Javascript以及当今大多数语言都没有使用完全的布尔进化,所以这是可行的。

这应该可以帮到你

if (urls["tasks"] && urls["tasks"]["ipv6"] && urls["tasks"]["ipv6"] === true)
{
    ...
}
if (urls && urls["tasks"] && urls["tasks"]["ipv6"] === true) {
    console.log("true");
}
如果需要,您也可以在左侧添加URL检查,也可以省略中间的检查URL[tasks][ipv6],因为如果未定义,则肯定不是这样


问题是,在向下钻取之前,必须首先检查上层属性是否存在。而且,由于Javascript以及当今大多数语言都没有使用完全的布尔进化,所以这是可行的。

在检查真或假之前,先检查typeof

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

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

在检查正确或错误之前,请检查typeof


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

我认为中间url[tasks][ipv6]测试是不必要的。FWIW,你们所说的完全布尔进化也被称为短路评估。@FelixKling:我编辑了我的答案以包含这些信息。谢谢。@FelixKling:Short-circuit evaluation实际上与多年前在Turbo Pascal中用作编译器开关的另一个术语相反…:但你是对的,这是关于相同的范例。啊,好的,谢谢:我只知道另一个术语,我知道它实际上是相反的。总之,很明显:@RobertKoritnik感谢堆,它工作得很好,我不知道它会这样计算。我认为中间URL[tasks][ipv6]测试是不必要的。FWIW,你们所说的完全布尔进化也被称为短路评估。@FelixKling:我编辑了我的答案以包含这些信息。谢谢。@FelixKling:Short-circuit evaluation实际上与多年前在Turbo Pascal中用作编译器开关的另一个术语相反…:但你是对的,这是关于相同的范例。啊,好的,谢谢:我只知道另一个术语,我知道它实际上是相反的。总之,很明显:@RobertKoritnik感谢堆它工作得很好,我不知道它会这样计算。有点冗长,但仍然无效。。。未定义的应该是文字而不是字符串。。。或者使用返回字符串的typeof运算符…稍微冗长,但仍然无效。。。未定义的应该是文字而不是字符串。。。或者使用返回字符串的typeof运算符。。。