我想知道为什么/何时-1
分别在JavaScript或jQuery中使用。
我正在使用此代码段:
if ($.inArray('false', answers) > -1) {
window.console.log('you Lose!');
}
干杯,
克里斯
答案 0 :(得分:3)
在这种情况下,如果您要查找的表达式不在您正在查找的数组中,则会返回-1
。
虽然根据its documentation,$.inArray
返回元素的索引(如果找到),但-1
的索引是不可能的:这是由于索引这一事实以0作为最低可能值开始。
因此-1
只表示无效的索引位置,即未找到。
因此,在您的代码段中,> -1
的测试意味着:检查是否找到任何有效索引,或者换句话说,检查给定值是否在数组中。< / p>
文档中甚至提到了这一点:
因为JavaScript将0视为松散等于false(即0 == false,但是0!== false),如果我们检查数组中是否存在值,我们需要检查它是否等于(或大于)-1。
希望这会有所帮助: - )
答案 1 :(得分:2)
因为索引从0开始(0-index)。
var arr = ['a', 'b', 'c'];
alert( arr[0] ) // a;
因此,当检查数组中元素的索引($.inArray
和[].indexOf
)时,如果元素不存在则返回0是错误的:
var arr = ['a', 'b', 'c'];
alert( arr.indexOf('a') ); // 0
alert( arr.indexOf('b') ); // 1
alert( arr.indexOf('c') ); // 1
alert( arr.indexOf('d') ); // -1
我想说jQuery在这里有一个设计缺陷,我宁愿认为jQuery.inArray
会返回一个布尔值(true/false
)。