我正在学习节点。下面的代码给出了不一致的结果,即,如果我给argv1.indexOf('test')
,那么代码无法找到文本,但是,有时候它返回true。为什么会这样。
function process(argv1) {
if(argv1.indexOf('test')) {
console.log('Text is available in array.');
}
}
process(['test','one','help', 'one', 'two']);
答案 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
将返回0
,false
将投放到true
。对于其他数组元素,它们的索引将转换为true
,因为任何非零数字都将转换为{{1}}。有关javascript评估的更多信息,请阅读here。