编程语言
首页 > 编程语言> > javascript-jQuery-jQuery inarray ignoreCase()和contains()

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