Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否忽略数组中区分大小写的输入?_Javascript_Jquery_Arrays_Multidimensional Array_Case Sensitive - Fatal编程技术网

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
行不再响应,但我想我必须为此提出一个新问题。