我一直在尝试在角度控制器中制作过滤器,在过滤数组时区分大小写.
我的数据如下:
var stoneArr =
[
{
"stone_name": "Diamond","id": 16
},{
"stone_name": "Ruby","id": 17
},{
"stone_name": "Sapphire","id": 18
},{
"stone_name": "Emerald","id": 19
}
];
我的HTML输入如下:
required>
我在控制器中的过滤器是:
var stoneObj = $filter('filter')(stoneArr,{stone_name:$scope.propertyName},true);
这里的陷阱是当我在输入字段中输入“diamond”时
$scope.propertyName = "diamond";
过滤器与此字符串不匹配“Diamond”.
我不想从等式中删除完全匹配条件(true),如下所示:
var stoneObj = $filter('filter')(stoneArr,{stone_name:$scope.propertyName}); //This won't work for me
这对我不起作用,因为我想匹配确切的字符串来过滤数据.并且数据将具有唯一的“stone_name”值.此外,我不想使用任何循环,因为数组长度将超过1000.无论如何我能做到这一点吗?
最佳答案
尝试使用匹配函数来获得不区分大小写的匹配:
var stoneObj = $filter('filter')(stoneArr,function (item) {
return item.stone_name.toLowerCase() == $scope.propertyName.toLowerCase();
},true);