jQuery inArray总是返回-1

时间:2014-03-11 23:27:58

标签: javascript jquery arrays

无法弄清楚为什么这总是返回-1

var statuses = [5, 7, 8, 10, 11, 12, 14, 16, 18, 23];
var posted_status = $('select[name=\'order_status_id\']').val();
alert($.inArray(posted_status, statuses));

无论数组中的哪个数字都设置在posting_status中,inArray方法始终返回-1或找不到。即:posted_status = 18或5或12返回-1未找到。

我在这里做错了什么想法?

2 个答案:

答案 0 :(得分:4)

因为数组中有数值并且正在搜索字符串,所以使用parseInt()或一元加运算符

posted_status的值解析为int
var statuses = [5, 7, 8, 10, 11, 12, 14, 16, 18, 23];
var posted_status = $('select[name=\'order_status_id\']').val();
alert($.inArray(parseInt(posted_status, 10), statuses));
alert($.inArray(+posted_status, statuses)); //using unary plus short and easy

Array.indexOf()

  

indexOf使用strict equality将searchElement与数组元素进行比较(与===或三等号使用的方法相同,   操作者)。

ES 5

  

indexOf将searchElement与数组中的元素进行比较   升序,使用内部严格平等比较   算法(11.9.6),如果在一个或多个位置找到,则返回   第一个这样的位置的索引;否则,返回-1。

答案 1 :(得分:2)

.val()函数返回一个字符串,这就是它找不到它的原因。 你应该解析这个值:

$.inArray(parseInt(posted_status, 10), statuses)