1

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

我正在使用这个片段:

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

干杯,

克里斯

4

2 回答 2

3

在这种情况下,-1如果您要查找的表达式不在您正在查找的数组中,则返回。

虽然,根据其文档$.inArray返回元素的索引(如果找到的话),索引-1是不可能的:这是因为索引以 0 作为可能的最低值开始。

因此-1,仅意味着无效的索引位置,即未找到。

因此,在您的代码段中,测试> -1意味着:检查是否找到任何有效索引,或者换句话说,检查给定值是否在数组中。

文档中甚至提到了这一点:

因为 JavaScript 将 0 视为松散地等于 false(即 0 == false,但 0 !== false),如果我们要检查数组中是否存在值,我们需要检查它是否不等于(或大于) -1。

希望这可以帮助 :-)

于 2013-06-03T10:40:23.757 回答
2

因为索引是从 0 开始的。(0-index)。

var arr = ['a', 'b', 'c'];

alert( arr[0] ) // a;

因此,在检查数组 ( $.inArrayand [].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)。

于 2013-06-03T10:40:08.960 回答