我有一种情况,我在数组中搜索某些东西,如果找到一个值,我会做一些事情.我这样做是通过将变量设置为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以获取证据。)
如何测试结果,看它是否>= 0
而不是依赖于它的真实性?
if (index >= 0) { ... }
Run Code Online (Sandbox Code Playgroud)
该undefined
值是不是 >= 0
这样,应该工作.
您的意思是您有一个变量可能是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)
归档时间: |
|
查看次数: |
1511 次 |
最近记录: |