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