如何在indexOf中检查小写

时间:2015-10-06 11:24:44

标签: javascript jquery angularjs

这里的疾病列表是一个数组。

for(var i=0;i<_list.length;i++)
{
    if($scope.diseaseList.indexOf(_list[i].disease) != -1){
        _list[i].favorite = true;
    }else{
        _list[i].favorite = false;
    }
}

我想做这样的事情

if($scope.diseaseList.toLoweCase().indexOf(_list[i].disease.toLoweCase()) != -1){

但它抛出错误,因为$scope.diseaseList是一个数组。我可以删除indexOf并再使用一个循环,但我不想这样做。还有其他选择 请建议。

1 个答案:

答案 0 :(得分:8)

数组没有toLowerCase(请注意,在您的代码中存在拼写错误:缺少r)函数。但您可以使用map函数并返回小写值。它的工作原理如下:

["Foo", "BaR"].map(function (c) { return c.toLowerCase(); });
// => ["foo", "bar"]

在您的代码中,可以按如下方式应用:

if($scope.diseaseList.map(function (c) {
    return c.toLowerCase();
   }).indexOf(_list[i].disease.toLowerCase()) != -1) { ... }

此外,您可以删除!= -1并将其更改为使用按位运算符:

if(~$scope.diseaseList.map(function (c) {
    return c.toLowerCase();
   }).indexOf(_list[i].disease.toLowerCase())) { ... }

@Tushar还有一个有趣的解决方案,用于将字符串数组转换为小写:

String.prototype.toLowerCase.apply(arr).split(',');