js,$.inArray,未返回预期的返回值

js, $.inArray, not returning expected returns

本文关键字:返回值 inArray js 返回      更新时间:2023-09-26

我想问一个问题,为什么这不起作用?

http://jsfiddle.net/2FMue/4/

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检查字符串在数组中的位置。

但它不会返回正确的索引。

我不知道这个例子错在哪里。请提供建议。

非常感谢。

来自DOCS:

因为JavaScript将0视为松散地等于false(即0==false,但为0!==false),如果我们正在检查值的存在在数组中,我们需要检查它是否不等于(或大于)-1.

所以:

if( $.inArray($('#id').text(), a) != -1) alert(2);

它运行得非常好

$.inArray返回在给定数组中找到的元素的索引(如果未找到,则返回-1)。

例如,

$.inArray("United State", ["United State", "America"]) ===  0
$.inArray("Unknown", ["United State", "America"])      === -1

因此,为了检查元素是否存在于数组中,您必须使用:

if ($.inArray("Unknown", ["United State", "America"]) > -1) {
    // ...
}

$.inArray()方法类似于JavaScript的原生.indexOf()方法,因为当找不到匹配项时,它会返回-1。如果数组中的第一个元素与值匹配,$.inArray()将返回0。

因为JavaScript将0视为松散地等于false(即0==false,但0!==false),所以如果我们要检查数组中是否存在值,我们需要检查它是否不等于(或大于)-1。

点击此处阅读更多信息:http://api.jquery.com/jQuery.inArray/

搜索项是否可能是数组中的第一个元素?这将返回0,javascript将其视为false。你的if语句应该是:

if($.inArray($('#id').text(), a) < 0) alert(2);

阅读文档http://api.jquery.com/jQuery.inArray/

来自split的数组是基于0的索引,并且您要求的字符串是第一个,所以它返回一个0值-这是错误的,所以您在条件中的警报不会触发,因为您从inArray中获取0索引。

将您的输入值更改为"fred,United States,America",您会看到它发出警报。