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

Javascript “如何评估”;如果;数组索引值为0时失败的比较条件?,javascript,arrays,Javascript,Arrays,我编写了一个if条件,其中返回值是数组的索引。返回数组的第一个对象(索引为0)时,if条件失败。有办法解决这个问题吗 我正在检查数组中是否存在值项 我的代码是: if (array.indexOf(term)) { //do something } else { alert("error"); } 这是因为在JavaScript中。考虑这个样本: if (0) { console.log("will never run"); } 正如所暗示的那样,log()调用将永远

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

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

我的代码是:

if (array.indexOf(term)) {
    //do something
}
else {
    alert("error");
}
这是因为在JavaScript中。考虑这个样本:

if (0) {
    console.log("will never run");
}
正如所暗示的那样,
log()
调用将永远不会运行

您可以执行以下操作:

if(array.indexOf(term) > -1) { 
    // do stuff 
}
或者一个更有意义的比较,取决于上下文

这是因为在JavaScript中。考虑这个样本:

if (0) {
    console.log("will never run");
}
正如所暗示的那样,
log()
调用将永远不会运行

您可以执行以下操作:

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

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

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

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

您还可以使用按位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
}

您还可以使用按位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
}

我猜您遇到了某种类型的空异常。是在java中,但它解释了相同的概念(只需将其改编为javascript),您缺少一个右括号。这是复制/粘贴错误吗?如果(array.indexOf(term)>-1)是通常的方式。@Jason是的,这是复制粘贴错误。更正了。@Sidd收到了。。谢谢我猜您遇到了某种类型的空异常。是在java中,但它解释了相同的概念(只需将其改编为javascript),您缺少一个右括号。这是复制/粘贴错误吗?如果(array.indexOf(term)>-1)是通常的方式。@Jason是的,这是复制粘贴错误。更正了。@Sidd收到了。。谢谢我不确定这在JavaScript中是“快”还是“慢”,但这是肯定的valid@jdphenix我想不是快速,而是简练的哈哈。我不确定这在JavaScript中是“快”还是“慢”,但这是肯定的valid@jdphenix我想我不是指快速,而是指简洁的哈哈。