我想在数组中搜索一个值,但是搜索应该忽略小写/大写字母。我怎样才能做到这一点呢?
这是我的代码:
$.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];
}