无法弄清楚为什么这总是返回-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未找到。
我在这里做错了什么想法?
答案 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
indexOf使用strict equality将searchElement与数组元素进行比较(与===或三等号使用的方法相同, 操作者)。
indexOf将searchElement与数组中的元素进行比较 升序,使用内部严格平等比较 算法(11.9.6),如果在一个或多个位置找到,则返回 第一个这样的位置的索引;否则,返回-1。
答案 1 :(得分:2)
.val()函数返回一个字符串,这就是它找不到它的原因。 你应该解析这个值:
$.inArray(parseInt(posted_status, 10), statuses)