如何评估当数组索引值为0时失败的“if”比较条件?

时间:2015-05-07 20:06:56

标签: javascript arrays

我写了一个if条件,其中返回值是indexOf一个数组。返回数组的第一个对象时,if条件失败(索引为0)。有没有什么办法解决这一问题?

我正在检查数组中是否存在值term

我的代码是:

if (array.indexOf(term)) {
    //do something
}
else {
    alert("error");
}

3 个答案:

答案 0 :(得分:3)

这是因为JavaScript中的0 is falsy。请考虑以下示例:

if (0) {
    console.log("will never run");
}

log()调用将暗示永远不会运行。

您可以执行以下操作:

if(array.indexOf(term) > -1) { 
    // do stuff 
}

或者更有意义的比较,取决于上下文。

答案 1 :(得分:1)

indexOf()函数返回数组中元素的索引。如果找不到,则返回-1。因此,您必须检查indexOf()是否返回大于-1的值。如果为true,则它在数组中。

答案 2 :(得分:1)

您还可以使用按位NOT运算符(~)来快速检查某事物的索引是否意味着它包含它。例如......

if(~[].indexOf('no')) { // Evaluates to 0
    console.log('Bitwise NOT of -1 evalautes to true'); // It doesn't
} else if (~['test'].indexOf('test')) { // Evaluates to something other than 0
    console.log('Bitwise NOT of 0 evalautes to true'); // It does
}