忽略数组中区分大小写的输入?

Ignore case-sensitive input in an array?

我想在数组中搜索一个值,但搜索应该忽略 lower/upper-case 个字母。 我怎样才能做到这一点?

这是我的代码:

$.ajax({
type: "GET",
url: "ajax.php",
dataType: "json",
data: { pageType: pageType, input: request.term, dataString: 'getPageInfo' },
success: function(data) 
{                                               
var values = $.map(data, function(item) { return {id: item.id, label: item.label, value: item.value}; });   
for (var i = 0; i < values.length; i++) {
    if (values[i].label.split(',').indexOf(request.term) >= 0) {
       var found = values[i];
    }
}       
if (!found) values.push({id: 0, label: request.term + ' hinzufügen', value: request.term});
response(values);       

这是关于提供创建新条目的选项,如果输入已经匹配条目以防止用户创建重复条目,如您在最后一行中看到的那样。 request.term是用户输入的值,values是数组。

例如,如果我正在搜索 "berlin" 或 "BERLIN" 或 "bERLiN" 并且我的数据库中的条目是 "Berlin",那么它仍然应该标记在数组中找到的此项。

一种选择是事先强制使用大写或小写:

var iterm = request.term.toLowerCase();
// ...
if (values[i].label.toLowerCase().split(',').indexOf(iterm) >= 0) {

或者您可以将 request.term 变成不区分大小写的正则表达式,但这样做涉及转义其中所有可能在正则表达式中特殊的字符,这很痛苦。您必须查看 lottoLowerCase 开销值才能让我想看看这种复杂性。

将值和术语转换为小写:

if (values[i].label.toLowerCase().split(',').indexOf(request.term.toLowerCase()) >= 0) {
   var found = values[i];
}