$ .inArray为什么/何时返回-1?

时间:2013-06-03 10:38:23

标签: javascript jquery arrays

我想知道为什么/何时-1分别在JavaScript或jQuery中使用。

我正在使用此代码段:

if ($.inArray('false', answers) > -1) {
  window.console.log('you Lose!');
}

干杯,

克里斯

2 个答案:

答案 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)。

相关问题