Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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中将带空格的字符串数组转换为小写,然后在Webkit中搜索失败_Javascript_Jquery_Arrays - Fatal编程技术网

在Javascript中将带空格的字符串数组转换为小写,然后在Webkit中搜索失败

在Javascript中将带空格的字符串数组转换为小写,然后在Webkit中搜索失败,javascript,jquery,arrays,Javascript,Jquery,Arrays,我正在尝试编写一段代码,它接受一个字符串数组,该数组带有包含项名称和项的空格,并在其中搜索字符串str。只要我不首先尝试将数组转换为小写,这样就可以捕获搜索字符串的所有可能情况,代码就可以正常工作。附加的JSFIDLE中的代码在Firefox中运行良好,但在WebKit或IE中则不行。有人能提供一些见解吗 //项名称数组,0包含字符串 //函数searchArray将在字符串数组strArray中搜索字符串str //这似乎创建了相同的输出,但在Firefox或Webkit中都不起作用: //如

我正在尝试编写一段代码,它接受一个字符串数组,该数组带有包含项名称和项的空格,并在其中搜索字符串str。只要我不首先尝试将数组转换为小写,这样就可以捕获搜索字符串的所有可能情况,代码就可以正常工作。附加的JSFIDLE中的代码在Firefox中运行良好,但在WebKit或IE中则不行。有人能提供一些见解吗

//项名称数组,0包含字符串

//函数searchArray将在字符串数组strArray中搜索字符串str

//这似乎创建了相同的输出,但在Firefox或Webkit中都不起作用:

//如果阵列包含电池,该功能将返回正极位置

//如果找到id,则显示消息

//如果未找到str,则显示消息

试试这个:

var lowerCaseItems = $.map(items, function(n,i){return n.toLowerCase();});
在null/window上下文上调用函数,并将项作为参数传递给函数。因此,传递toLowerCase函数将不起作用,因为它必须在jQuery.map不起作用的字符串对象上调用。

尝试以下操作:

var lowerCaseItems = $.map(items, function(n,i){return n.toLowerCase();});

在null/window上下文上调用函数,并将项作为参数传递给函数。因此,传递toLowerCase函数将不起作用,因为它必须在字符串对象上调用,而jQuery.map不能这样做。

Firefox非常宽松:

从JavaScript 1.6开始,Firefox中也可以使用字符串实例方法,但不是字符串对象上ECMAScript标准的一部分,用于将字符串方法应用于任何对象:


这就是为什么String.toLowerCase在FF中工作,但严格来说它不是规范的一部分,不应该在其他任何地方工作。

Firefox非常宽容:

从JavaScript 1.6开始,Firefox中也可以使用字符串实例方法,但不是字符串对象上ECMAScript标准的一部分,用于将字符串方法应用于任何对象:


这就是String.toLowerCase在FF中工作的原因,但严格来说,它不是规范的一部分,不应该在其他任何地方工作。

您没有正确使用$.map函数。它需要一个带有2个参数的回调函数。请参阅并尝试以下操作:

var lowerCaseItems = $.map(items, 
        function(item, index) {
            return item.toLowerCase();
        });

它在Chrome中工作。

您没有正确使用$.map函数。它需要一个带有2个参数的回调函数。请参阅并尝试以下操作:

var lowerCaseItems = $.map(items, 
        function(item, index) {
            return item.toLowerCase();
        });

它在Chrome中工作。

@NathanielBannister如果您需要代码:$.mapitems,functionx{return x.toLowerCase;};:@NathanielBannister如果需要代码:$.mapitems,functionx{return x.toLowerCase;};:
contains = searchArray("string", lowerCaseItems);
alert(contains);
if ($('#noItems').length) {
    $('#emptyCart').show();
}
if (contains == -1) {
    $('#noString').show();
}
//else 
else {
    alert("String Found");
}
var lowerCaseItems = $.map(items, function(n,i){return n.toLowerCase();});
var lowerCaseItems = $.map(items, 
        function(item, index) {
            return item.toLowerCase();
        });