我写了一个if条件,其中返回值是indexOf
一个数组。返回数组的第一个对象时,if条件失败(索引为0)。有没有什么办法解决这一问题?
我正在检查数组中是否存在值term
。
我的代码是:
if (array.indexOf(term)) {
//do something
}
else {
alert("error");
}
答案 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
}