如何让0返回true?

hbh*_*hra 0 javascript

我有一种情况,我在数组中搜索某些东西,如果找到一个值,我会做一些事情.我这样做是通过将变量设置为undefined,然后在找到值时设置为找到的元素的索引.如果返回的值不是0,这将起作用,但如果它是0,则返回false.我该如何解决这个问题?

var index = undefined;
for(var i=0; i<ARRAY; i++)
{
  if(CONDITION)
     index = i;
}
if(index)
{
  DO SOMETHING
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题发生在索引结果为零时,因为这返回了false.我想这样做的原因是因为我不确定它是否存在于数组中.

Dan*_*Tao 11

为什么不100%明确?毕竟,这是您真正想要检查的内容:

if (typeof index === 'number')
{
  // DO SOMETHING
}
Run Code Online (Sandbox Code Playgroud)

我什至更喜欢这样做,>= 0因为该运算符为非数字值提供了一些奇怪的结果:

Input | >= 0
------------
"1"   | true
false | true
null  | true
[]    | true
""    | true
Run Code Online (Sandbox Code Playgroud)

(请参阅此 jsFiddle以获取证据。)


Poi*_*nty 5

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

if (index >= 0) { ... }
Run Code Online (Sandbox Code Playgroud)

undefined值是不是 >= 0这样,应该工作.


Lig*_*ica 4

您的意思是您有一个变量可能是undefined或某个数字,并且您希望与?undefined区分开来。0

然后:

if (index)      // wrong
if (index >= 0) // right
Run Code Online (Sandbox Code Playgroud)

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

if (index !== undefined) { .. }
Run Code Online (Sandbox Code Playgroud)