如何使用angular $ filter来过滤区分大小写的字符串比较器

时间:2016-09-23 13:53:46

标签: javascript angularjs angularjs-filter

我一直在尝试在角度控制器中制作过滤器,在过滤数组时区分大小写。

我的数据如下:

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+。无论如何我能做到这一点吗?

1 个答案:

答案 0 :(得分:3)

尝试使用匹配函数来获得不区分大小写的匹配:

var stoneObj = $filter('filter')(stoneArr, function (item) {
    return item.stone_name.toLowerCase() == $scope.propertyName.toLowerCase();
},true);