我想问一个问题,为什么这不起作用?
var a = $('input').attr('value').split(',');
if(a instanceof Array) alert(1);
if($.inArray($('#id').text(), a)) alert(2);
if($.inArray('United State', a)) alert(3);
// a is array but no return correct match.
我将一个值拆分为数组并使用$ .inArray来检查数组中字符串的位置。
但它不会返回正确的索引。
我不知道这个例子有什么问题。请指教。
非常感谢。
答案 0 :(得分:3)
来自DOCS:
因为JavaScript将0视为松散等于false(即0 == 假,但是0!== false),如果我们检查是否存在值 在数组中,我们需要检查它是否不等于(或大于) -1
所以:
if( $.inArray($('#id').text(), a) != -1) alert(2);
答案 1 :(得分:2)
$.inArray
返回给定数组中找到的元素的索引(如果找不到,则返回-1
。)
举个例子,
$.inArray("United State", ["United State", "America"]) === 0
$.inArray("Unknown", ["United State", "America"]) === -1
因此,为了检查元素是否存在于数组中,您必须使用:
if ($.inArray("Unknown", ["United State", "America"]) > -1) {
// ...
}
答案 2 :(得分:2)
$ .inArray()方法类似于JavaScript的原生.indexOf()方法,因为它在找不到匹配项时返回-1。如果数组中的第一个元素与value匹配,则$ .inArray()返回0.
因为JavaScript将0视为松散等于false(即0 == false,但是0!== false),如果我们检查数组中是否存在值,我们需要检查它是否等于(或大于)-1。
在此处阅读更多内容:http://api.jquery.com/jQuery.inArray/
答案 3 :(得分:2)
搜索词是否是数组中的第一个元素?这将返回0,javascript视为false。你的if语句应该是:
if($.inArray($('#id').text(), a) < 0) alert(2);
答案 4 :(得分:1)
分割中的数组是基于0的索引,并且您要求的字符串是第一个,因此它返回0值 - 这是假的,因此您在条件内的警报不会因为您获得0而触发来自inArray的索引。
将您的输入值更改为“fred,United State,America”,您会看到它警报。