这里的疾病列表是一个数组。
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
并再使用一个循环,但我不想这样做。还有其他选择
请建议。
答案 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(',');