jQuery inArray - 问题

Sta*_*bie -1 javascript jquery

假设我有一个a值为的变量:

1
Run Code Online (Sandbox Code Playgroud)

然后我有一个b包含值的数组:

[1, 2]
Run Code Online (Sandbox Code Playgroud)

为什么$.inArray(a, b)给我一个-1?我应该得到0,对吧?

小智 6

正是你所描述的给了我0[ 小提琴 ]:

var a = 1, b = [1, 2];
alert($.inArray(a, b)); // alerts "0"
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,我可以复制你的结果(如IAbstractDownvoteFactory建议的那样):

var a = 1, b = ["1", "2"];
alert($.inArray(a, b)); // alerts "-1"
Run Code Online (Sandbox Code Playgroud)
var a = "1", b = [1, 2];
alert($.inArray(a, b)); // alerts "-1"
Run Code Online (Sandbox Code Playgroud)

.inArray只查找与您正在搜索的类型相同的匹配项(与之进行比较===).如果您无法使输入数据格式正确,您可以自己完成:

要转换a为数字:

a = +a; // or a = Number(a);
Run Code Online (Sandbox Code Playgroud)

要将所有元素转换b为数字:

for (var i = 0; i < b.length; i++) {
    b[i] = +b[i];
}
Run Code Online (Sandbox Code Playgroud)