Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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 如何使0返回真值?_Javascript - Fatal编程技术网

Javascript 如何使0返回真值?

Javascript 如何使0返回真值?,javascript,Javascript,在某种情况下,我在数组中搜索某个值,如果找到某个值,我就会执行某些操作。我是通过将一个变量设置为undefined来实现的,然后在找到该值时,将其设置为找到的元素的索引。如果返回的值不是0,这将起作用,但如果是0,则返回为false。我怎样才能解决这个问题 var index = undefined; for(var i=0; i<ARRAY; i++) { if(CONDITION) index = i; } if(index) { DO SOMETHING } va

在某种情况下,我在数组中搜索某个值,如果找到某个值,我就会执行某些操作。我是通过将一个变量设置为undefined来实现的,然后在找到该值时,将其设置为找到的元素的索引。如果返回的值不是0,这将起作用,但如果是0,则返回为false。我怎样才能解决这个问题

var index = undefined;
for(var i=0; i<ARRAY; i++)
{
  if(CONDITION)
     index = i;
}
if(index)
{
  DO SOMETHING
}
var指数=未定义;

对于(var i=0;i
0
在javascript中为假;使用
=
测试值是否为假:

foo = 0;
foo == false //true
foo === false //false
当您将该值设置为未定义时,一种测试方法是查看该值是否不是数字:

if (!isNaN(foo))
{
  //foo is numeric
}

0
在javascript中为假;使用
==
测试值是否为假:

foo = 0;
foo == false //true
foo === false //false
当您将该值设置为未定义时,一种测试方法是查看该值是否不是数字:

if (!isNaN(foo))
{
  //foo is numeric
}

不如测试结果,看看它是否
=0
,而不是依赖它的真实性

if (index >= 0) { ... }

未定义的
值是
=0
,因此应该可以工作。

如何测试结果,看看它是否是
=0
,而不是依赖它的真实性

if (index >= 0) { ... }

未定义的
值是而非
=0
,因此应该可以工作。

您的意思是您有一个变量可能是
未定义的
或某个数字,并且希望
未定义的
0
区分开来

然后:

或者,您可以使用类型感知比较:

if (index !== undefined) { .. }

您的意思是您有一个变量可能是
未定义的
或某个数字,并且希望
未定义的
0
区分开来

然后:

或者,您可以使用类型感知比较:

if (index !== undefined) { .. }

可以使用-1表示在数组中找不到索引。如前所述,如果将0像布尔值一样使用,则0将隐式转换为“false”。可以使用===避免隐式转换。

可以使用-1表示在数组中找不到索引。如前所述,0将隐式转换为“false”如果你像布尔一样使用它。你可以使用===来避免隐式转换。

你不能这样做,因为你需要在JS的真实性定义中工作,或者显式检查
未定义的

你可以…不这样做,因为你需要在JS的真实性定义中工作,或者显式检查对于
未定义的

为什么不100%明确?毕竟,这是您实际想要检查的:

if (typeof index === 'number')
{
  // DO SOMETHING
}
我甚至更喜欢这样检查
>=0
,因为该运算符对非数值给出了一些奇怪的结果:

Input | >= 0
------------
"1"   | true
false | true
null  | true
[]    | true
""    | true

(有关证据,请参阅。)

为什么不100%明确?毕竟,这是您实际想要检查的:

if (typeof index === 'number')
{
  // DO SOMETHING
}
我甚至更喜欢这样检查
>=0
,因为该运算符对非数值给出了一些奇怪的结果:

Input | >= 0
------------
"1"   | true
false | true
null  | true
[]    | true
""    | true


(请参阅以获取证据。)

显示您的测试用例,并定义所有这些“东西”s、 @Topener:不,不是;但是,两者都是假的。@hbtest你确定你不只是想使用这个函数吗?哇!这正是我需要和想要的。我对javascript不太熟悉,所以我不知道它存在。实际上它不起作用,我需要数组中某个对象的属性来匹配,而不是直接在arrayShow中的对象您的测试用例,并定义所有这些“东西”s、 @Topener:不,不是;但是,两者都是错误的。@hbtest你确定你不只是想使用这个函数吗?哇!这正是我需要和想要的。我对javascript不太熟悉,所以我不知道它存在。实际上它不起作用,我需要数组中某个对象的属性来匹配,而不是直接在数组中的对象但是OP说其他的元素是
未定义的
,而不是
假的
(虽然他显然可以像
未定义的
一样容易地使用
假的
)。@DanTao,自从我第一次发布我的简短回答以来,原来的问题已经发生了很大的变化。@zzzzBov:不,它说的是“
未定义的
”因为它是第一次发布的。@TomalakGeret'kal,你是对的,我错了。我被一句话弄糊涂了:“如果返回的值不是0,那么这就行了,但是如果它是0,那么它就返回为false”.无论如何,我已经用另一种解决方案更新了我的答案。是的,但OP说其他元素是
未定义的
,而不是
错误的
(尽管他显然可以像
未定义的
一样轻松地使用
错误的
)@DanTao,自从我第一次发布我的简短回答以来,原来的问题已经发生了很大的变化。@ZZZBOV:不,自从第一次发布以来,它说的是“
未定义”
。@TomalakGeret'kal,你是对的,我是错的。我被这句话弄糊涂了:“如果返回的值不是0,那么它会工作,但是如果它是0,那么它会返回为false。”。无论如何,我已经用另一种解决方案更新了我的答案。这解决了我的问题,但在看了其他答案后,我意识到我把问题复杂化了。我可以使用-1的java方式。@hbtest:当然,你也可以这样做。这不是这个问题的答案,但可以完全避免最初的问题。FWIW,我会使用<代码>未定义
:它更“遥远”从正数看,这比
-1
更适合我作为非索引哨兵使用。我本来打算接受你的,但现在接受答案还为时过早。这解决了我的问题,但在看了其他答案后,我意识到这太复杂了。我可以使用-1的java方式。@hbtest:Sure、 你也可以这样做。这不是这个问题的答案,但它会完全避免最初的问题。FWIW,我会使用
未定义的
:它比
-1
更“远离”正数,因此我觉得更适合用作非索引哨兵。我本来打算接受你的,但时间太早了