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



我想在数组中搜索一个值,但是搜索应该忽略小写/大写字母。我怎样才能做到这一点呢?

这是我的代码:

$.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转换为不区分大小写的正则表达式,但这样做涉及转义其中可能在正则表达式中是特殊的所有字符,这是一个痛苦。您必须查看toLowerCase开销的值,以使我想查看该复杂性。

将值和术语转换为小写:

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

相关内容

  • 没有找到相关文章

最新更新