javascript-jQuery-jQuery inarray ignoreCase()和contains()
作者:互联网
好吧,我更像是一个PHP的人,除了简单设计相关的操作之外,我的JS技能几乎与其他JS无关,所以请问一下我是否很明显.
在PHP中,以下操作会轻而易举(在JS中也可能是轻而易举-但我在这里与不熟悉的语法作斗争…)
这是某种输入验证
var ar = ["BRS201103-0783-CT-S", "MAGIC WORD", "magic", "Words", "Magic-Word"];
jQuery(document).ready(function() {
jQuery("form#searchreport").submit(function() {
if (jQuery.inArray(jQuery("input:first").val(), ar) != -1){
jQuery("#contentresults").delay(800).show("slow");
return false;
}
这个问题有两部分.
> 1-如何使数组不区分大小写?
例如. -BRS201103-0783-CT-S的结果与brs201103-0783-ct-s和Brs201103-0783-CT-s或MAGIC魔术Magic MaGIc相同
基本上我需要数组的诸如ignoreCase()之类的东西,但是我在jQuery和JS中都找不到对此的任何引用…
我试图toLowerCase()-但它不能在数组上工作(ittirating ??),而且,它可以解决混合情况吗?
> 2-如何使该功能仅识别零件或
元素的组合?
例如. -如果只键入“单词”,我希望它作为“单词”通过,并且如果有人键入“某些单词”,则它应该通过(包含“单词”)
解决方法:
第1部分
您可以将数组完全小写,并将输入小写,以便indexOf()像执行不区分大小写的搜索一样工作.
您已经知道,可以使用toLowerCase()将字符串小写.
要做一个数组,你可以使用…
arr = arr.map(function(elem) { return elem.toLowerCase(); });
第2部分
您可以检查一个子字符串,例如…
// Assuming you've already transformed the input and array to lowercase.
var input = "word";
var words = ["word", "words", "wordly", "not"];
var found = words.some(function(elem) { return elem.indexOf(input) != -1; });
或者,您可以在此实例中跳过,通过在检查indexOf()之前在每个elem上调用toLowerCase()将数组转换为小写形式.
较旧的IE不支持some()
和map()
,但对于polyfill而言却微不足道.链接的文档中提供了每种填充的示例.
正如Fabrício Matté所指出的那样,您可以在此处使用jQuery等效项:Array.prototype.map()使用$.map(),Array.prototype.some()使用具有length属性的$.grep().然后,您将免费获得浏览器兼容性.
标签:javascript,jquery,arrays,case-insensitive,contains 来源: https://codeday.me/bug/20191010/1888033.html