在javascript中搜索数组时忽略大小写

在javascript中搜索数组时忽略大小写,javascript,Javascript,我只是想在做搜索的时候忽略这个案例什么是最好的方法?(请不要用Jquery) 函数搜索(searchValue){ 发现的var=[]; 对于(var i=0;i

我只是想在做搜索的时候忽略这个案例什么是最好的方法?(请不要用Jquery)

函数搜索(searchValue){
发现的var=[];
对于(var i=0;i

我尝试了
搜索(searchValue.ignoreCase)
但它返回了所有大写字母的副本。有什么建议吗?我想忽略photoData描述的大小写,只要您不处理Unicode字符(因为某些大小写转换在某些支持Unicode的语言中意外工作),请执行以下操作:

if (photoData[i].description.toUpperCase() === searchValue.toUpperCase()) {
    your code
}

或者,只要不处理Unicode字符,就可以使用toLowerCase…

(在某些支持Unicode的语言中,某些大小写转换会意外工作),请执行以下操作:

if (photoData[i].description.toUpperCase() === searchValue.toUpperCase()) {
    your code
}

或者您可以使用toLowerCase…

创建一个
新RegExp
并使用不区分大小写的标志,如:

function search(array, searchValue) {
    var matchedValues, re, i, j, cur;

    matchedValues = [];
    re = new RegExp(searchValue, "i");
    for (i = 0, j = array.length; i < j; i++) {
        cur = array[i];
        if (cur.description.search(re) !== -1) {
            matchedValues.push(cur);
        }
    }
    return matchedValues;
}
演示:

参考:

  • Array.filter
  • RegExp

创建一个
新RegExp
并使用不区分大小写的标志,如:

function search(array, searchValue) {
    var matchedValues, re, i, j, cur;

    matchedValues = [];
    re = new RegExp(searchValue, "i");
    for (i = 0, j = array.length; i < j; i++) {
        cur = array[i];
        if (cur.description.search(re) !== -1) {
            matchedValues.push(cur);
        }
    }
    return matchedValues;
}
演示:

参考:

  • Array.filter
  • RegExp

    • 这里是一个来自

      函数搜索数组(元素,数组){
      var len=array.length,str=element.toString().toLowerCase();
      对于(变量i=0;i

      }以下是

      函数搜索数组(元素,数组){
      var len=array.length,str=element.toString().toLowerCase();
      对于(变量i=0;i

      }

      好吧,你可以创建一个正则表达式对象并使其成为不区分大小写的搜索:
      if(photoData[i].description.search(new RegExp(searchValue,“i”)!=-1{
      效果非常好!好吧,你可以创建一个正则表达式对象并使其成为不区分大小写的搜索:
      if(photoData[i].description.search(new RegExp(searchValue,“i”)!=-1){
      效果非常好!这样做比reg-ex方法更好(可读性更强),并且+1指出了Unicode的潜在问题。@GoloRoden您喜欢一个不符合预期的解决方案吗?
      .toUppercase()===.toUppercase()
      .search()做的事情不同
      @GoloRoden没什么大不了的。我想到的第一件事就是也这么做。但后来我意识到
      .search()
      在做什么,我知道这种方法不能比reg-ex方法做得更好(可读性更强),以及+1来指出Unicode的潜在问题。@GoloRoden你喜欢一个不符合预期的解决方案吗?
      .toUppercase()===.toUppercase()
      .search()
      @GoloRoden没有什么大不了的。我想到的第一件事就是也这样做。但后来我意识到了什么
      .search()
      当时正在做,并且知道这种方法不能用来做同样的事情。我只是使用了注释中的代码,效果很好!谢谢,伙计。也许可以将新的RegExp移出循环?@dc5是的,废话,很好。我在第二个示例中这样做,不知道为什么我在第一个示例中没有这样做。谢谢!我只是使用了注释中的代码,效果很好很好!谢谢伙计。也许把新的RegExp移出循环?@dc5是的,废话,很好。我在第二个例子中这么做了,不知道为什么我在第一个例子中没有。谢谢!
      function SearchArray( element, array ) {
      var len = array.length, str = element.toString().toLowerCase();
      for ( var i = 0; i < len; i++ ) {
          if ( array[i].toLowerCase() == str ) { return i; }
      }
      return -1;