js,$.inArray,未返回预期的返回值
js, $.inArray, not returning expected returns
我想问一个问题,为什么这不起作用?
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",您会看到它发出警报。
- Javascript返回值只在循环中返回一次
- XMLHttpRequest未返回值-状态202
- 根据是否解析了 Promise 从函数返回值
- Angular,函数在(模型)工厂中返回值
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何从客户端的数组中获取用户输入和返回值
- Javascript中带有返回值的嵌套函数
- 为变量分配多个nodejs导出返回值时出现问题
- 通过回调从onreadystatechange返回值
- 从Ajax函数返回值
- JavaScript生成器中收益率返回值的解析
- HTML如何根据javascript函数的返回值限制文本输入
- 返回值+new Date()与Date.now()是否不同
- 使用在函数外部声明的变量的 Javascript 返回值 + undefined
- 如何在Android中将Javascript返回值转换为String
- chrome.storage.sync.get未返回值-Angular服务
- 修复AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何从嵌套的API函数返回值
- jQuery inArray() 的返回值
- js,$.inArray,未返回预期的返回值