Javascript 是否忽略数组中区分大小写的输入?
我想搜索数组中的值,但搜索应该忽略小写/大写字母。 我怎样才能做到这一点 这是我的代码:Javascript 是否忽略数组中区分大小写的输入?,javascript,jquery,arrays,multidimensional-array,case-sensitive,Javascript,Jquery,Arrays,Multidimensional Array,Case Sensitive,我想搜索数组中的值,但搜索应该忽略小写/大写字母。 我怎样才能做到这一点 这是我的代码: $.ajax({ type: "GET", url: "ajax.php", dataType: "json", data: { pageType: pageType, input: request.term, dataString: 'getPageInfo' }, success: function(data) {
$.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);
$.ajax({
键入:“获取”,
url:“ajax.php”,
数据类型:“json”,
数据:{pageType:pageType,输入:request.term,数据字符串:'getPageInfo'},
成功:功能(数据)
{
var values=$.map(数据,函数(项){return{id:item.id,label:item.label,value:item.value};});
对于(变量i=0;i=0){
找到的var=值[i];
}
}
if(!found)values.push({id:0,label:request.term+'hinzufügen',value:request.term});
响应(值);
这是关于如果输入已经与条目匹配,则提供创建新条目的选项,以防止用户创建重复条目,如最后一行所示。request。term
是用户输入的值,values
是数组
因此,例如,如果我正在搜索“berlin”或“berlin”或“berlin”,并且数据库中的条目是“berlin”,那么它仍应将此项标记为在数组中找到的项。一个选项是预先强制使用大写或小写:
var iterm = request.term.toLowerCase();
// ...
if (values[i].label.toLowerCase().split(',').indexOf(iterm) >= 0) {
或者,您可以将
request.term
转换为不区分大小写的正则表达式,但这样做需要转义其中可能在正则表达式中特殊的所有字符,这是一个难题。您必须查看toLowerCase
开销的大量值,才能让我想这样做看看这种复杂性。一种选择是事先强制使用大写或小写:
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];
}
将值和术语转换为小写:
if (values[i].label.toLowerCase().split(',').indexOf(request.term.toLowerCase()) >= 0) {
var found = values[i];
}
您是否尝试过将字符串与toLowerCase()匹配?是否尝试过将字符串与toLowerCase()匹配英语不是我的母语,所以我想确定一下:你的意思是,如果我的数据库中有很多值包含特殊字符,如
%$§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§.label
。正则表达式中有许多具有特殊含义的字符,例如
。是的,请求.term
和值[i].label
不能包含特殊字符。这将在ajax.php
中进行服务器端验证,如果存在字母、数字或空白以外的内容,用户将收到错误消息。这是您作为示例显示的普通点吗?@Vaia:是的。它通常用于数字。在许多地区,它是“小数点”在一个数字的整数部分和小数部分之间(123.45
=123.45)。在其他一些局部变量中,它是“千位分隔符”(1.000.000
=100万)。请注意,括号(()
)在正则表达式中也有特殊的含义,问号(?
),反斜杠和其他一些符号。好的,我会记住这一点。谢谢!现在我唯一剩下的问题是,当我试图输入多个单词(带有空格)时,JQuery UI自动完成功能似乎停止了。我可以得到包含空格的结果,但最后的值。push
行不再响应,但我想我必须为此提出一个新问题。英语不是我的母语,所以我想确定:你的意思是,如果我的数据库中有许多值包含特殊字符,如%$§
,因为只有val允许包含空格、普通字母和数字的ues。@Vaia:我指的是请求中的特殊字符。term
,而不是值[I]。label
。正则表达式中有许多具有特殊含义的字符,例如
。是的,请求。term
和值[I].label
不能包含特殊字符。这将在ajax.php
中进行服务器端验证,如果存在字母、数字或空白以外的内容,用户将收到错误消息。这是您作为示例显示的普通点吗?@Vaia:是的。它通常用于数字。在许多地区,它是“小数点”在一个数字的整数部分和小数部分之间(123.45
=123.45)。在其他一些局部变量中,它是“千位分隔符”(1.000.000
=100万)。请注意,括号(()
)在正则表达式中也有特殊的含义,问号(?
),反斜杠和其他一些符号。好的,我会记住这一点。谢谢!现在我唯一剩下的问题是,当我试图输入多个单词(带有空格)时,JQuery UI自动完成功能似乎停止了。我可以得到包含空格的结果,但最后的值。push
行不再响应,但我想我必须为此提出一个新问题。