在if语句中对数组使用indexOf的结果不一致

时间:2014-12-09 01:11:01

标签: javascript arrays node.js indexof

我正在学习节点。下面的代码给出了不一致的结果,即,如果我给argv1.indexOf('test'),那么代码无法找到文本,但是,有时候它返回true。为什么会这样。

function process(argv1) {
    if(argv1.indexOf('test')) {
        console.log('Text is available in array.');
    }
}
process(['test','one','help', 'one', 'two']);

1 个答案:

答案 0 :(得分:5)

那是因为indexOf返回匹配元素的索引。如果找不到元素,它将返回-1

您需要的是改变条件:

function process(argv1) {
    if(argv1.indexOf('test') !== -1) {
        console.log('Text is available in array.');
    }
}
process(['test','one','help', 'one', 'two']);

修改:正如@Havvy所指出,如果test.indexOf将返回0false将投放到true。对于其他数组元素,它们的索引将转换为true,因为任何非零数字都将转换为{{1}}。有关javascript评估的更多信息,请阅读here