基本上,这是我正在使用的代码的虚拟版本,我将解释发生的事情:
var types = ['type1', 'type2', 'type3', 'type4', 'type5'],
type = 'type1';
if ($.inArray(type, types)) {
alert('In Array');
} else {
alert('Not In Array');
}
如果我将type
值更改为' type2'或阵列中所说的数组中的任何其他值。现在,如果我在数组的开头添加一个空白值,如下所示:
var types = ['', 'type1', 'type2', 'type3', 'type4', 'type5']
将type
值重新设置为' type1'它现在告诉我它在阵列中。我可能错过了一些明显的东西,我不确定哈哈。但我只是有点困惑,为什么它不接受当第一个数组值是实际值时它是数组中的第一个?如果有人能够对此有所了解,我们将不胜感激!
答案 0 :(得分:3)
使用$ .inArray时,您必须实际检查-1
,否则第一个索引将返回0
,这是假的
if ($.inArray(type, types) != -1) {
alert('In Array');
} else {
alert('Not In Array');
}
答案 1 :(得分:1)
$ .inArray()方法类似于JavaScript的原生.indexOf() 方法,因为它没有找到匹配时返回-1。如果 数组中的第一个元素与value匹配,$ .inArray()返回0。