我想知道为什么/何时-1
分别在 JavaScript 或 jQuery 中使用。
我正在使用这个片段:
if ($.inArray('false', answers) > -1) {
window.console.log('you Lose!');
}
干杯,
克里斯
我想知道为什么/何时-1
分别在 JavaScript 或 jQuery 中使用。
我正在使用这个片段:
if ($.inArray('false', answers) > -1) {
window.console.log('you Lose!');
}
干杯,
克里斯
在这种情况下,-1
如果您要查找的表达式不在您正在查找的数组中,则返回。
虽然,根据其文档,$.inArray
返回元素的索引(如果找到的话),索引-1
是不可能的:这是因为索引以 0 作为可能的最低值开始。
因此-1
,仅意味着无效的索引位置,即未找到。
因此,在您的代码段中,测试> -1
意味着:检查是否找到任何有效索引,或者换句话说,检查给定值是否在数组中。
文档中甚至提到了这一点:
因为 JavaScript 将 0 视为松散地等于 false(即 0 == false,但 0 !== false),如果我们要检查数组中是否存在值,我们需要检查它是否不等于(或大于) -1。
希望这可以帮助 :-)
因为索引是从 0 开始的。(0-index)。
var arr = ['a', 'b', 'c'];
alert( arr[0] ) // a;
因此,在检查数组 ( $.inArray
and [].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
)。