假设我的变量a
的值为:
1
然后我有一个数组b
,其值为:
[1, 2]
$.inArray(a, b)
为什么给我一个-1?我应该0
,对吧?
答案 0 :(得分:6)
您所描述的确切地告诉我0
[fiddle] :
var a = 1, b = [1, 2];
alert($.inArray(a, b)); // alerts "0"
但是,当我这样做时,我可以复制你的结果(如IAbstractDownvoteFactory建议的那样):
var a = 1, b = ["1", "2"];
alert($.inArray(a, b)); // alerts "-1"
var a = "1", b = [1, 2];
alert($.inArray(a, b)); // alerts "-1"
.inArray
只能找到与您搜索的内容相同的匹配项(它们与===
进行比较)。如果您无法使输入数据格式正确,您可以自己完成:
将a
转换为数字:
a = +a; // or a = Number(a);
将b
的所有元素转换为数字:
for (var i = 0; i < b.length; i++) {
b[i] = +b[i];
}
答案 1 :(得分:0)
不是转换为数字,而是转换为字符串可能更好,例如在您使用id的情况下,例如在某些情况下,它们将使用数字实体ID而在其他情况下使用字符串,例如字符串。英国的国家代码是GB。
确保所有值都设置为字符串
Arr[] = mixedValue.toString();
然后始终确保您的比较针是一个字符串
if ($.inArray(needle.toString(), Arr) === -1) {
// nope
} else {
// yep
}