Javascript - 不区分大小写的数组搜索

时间:2018-03-19 17:12:43

标签: javascript jquery arrays regex

此代码删除了所有重复的变量。有没有办法让这个函数中的数组搜索不区分大小写?



var x = ["AAA", "aaa", "bbb", "BBB"];

function unique(list) {
  var result = [];
  $.each(list, function(i, e) {
    if ($.inArray(e, result) == -1) result.push(e);
  });
  return result;
}

// Output should be AAA, bbb
console.log(unique(x)); 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

相关JSFiddle here

4 个答案:

答案 0 :(得分:1)

  • 您不需要jQuery。

  • 使用函数findIndex并将每个元素的每个元素转换为lowerCase。

&#13;
&#13;
var x = ["AAA", "aaa", "bbb", "BBB"];

function unique(list) {
  var result = [];
  list.forEach(function(e) {
    if (result.findIndex(function(r) {
      return r.toLowerCase() === e.toLowerCase();
    }) === -1)
    
    result.push(e);
  });
  
  return result;
}

console.log(unique(x))
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

使用箭头功能:

&#13;
&#13;
var x = ["AAA", "aaa", "bbb", "BBB"];

function unique(list) {
  var result = [];
  list.forEach((e) => {
    if (result.findIndex((r) => r.toLowerCase() === e.toLowerCase()) === -1)   
    result.push(e);
  });
  
  return result;
}

console.log(unique(x))
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用仅包含小写条目的查阅表:

function unique(arr){
  const before = new Set, result = [];

  for(const str of arr){
   const lower = str.toLowerCase();
   if(!before.has(lower)){
    before.add(lower);
    result.push(str);
   }
  }
  return result;
}

在一个oneliner:

const unique = arr => (set => arr.filter(el => (lower => !set.has(lower) && set.add(lower))(el.toLowerCase()))(new Set);

答案 2 :(得分:-1)

只需将.toLowerCase添加到所有内容

var x = ["AAA", "aaa", "bbb", "BBB"];

function unique(list) {
  var result = [];
  $.each(list, function(i, e) {
    if ($.inArray(e.toLowerCase(), result) == -1) result.push(e.toLowerCase());
  });
  return result;
}

alert(unique(x));

答案 3 :(得分:-1)

只需稍微调整就可以了,

function unique(list) {
    var result = [];
    $.each(list, function(i, e) {
        if($.inArray(e, list)){ result.push(e)};
    });
    return result;
}

工作正常

无需更改案例 testing the code