忽略数组中区分大小写的输入?
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
变成不区分大小写的正则表达式,但这样做涉及转义其中所有可能在正则表达式中特殊的字符,这很痛苦。您必须查看 lot 的 toLowerCase
开销值才能让我想看看这种复杂性。
将值和术语转换为小写:
if (values[i].label.toLowerCase().split(',').indexOf(request.term.toLowerCase()) >= 0) {
var found = values[i];
}
我想在数组中搜索一个值,但搜索应该忽略 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
变成不区分大小写的正则表达式,但这样做涉及转义其中所有可能在正则表达式中特殊的字符,这很痛苦。您必须查看 lot 的 toLowerCase
开销值才能让我想看看这种复杂性。
将值和术语转换为小写:
if (values[i].label.toLowerCase().split(',').indexOf(request.term.toLowerCase()) >= 0) {
var found = values[i];
}