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

Javascript 如何制作angular$filter来过滤区分大小写的字符串比较器,javascript,angularjs,angularjs-filter,Javascript,Angularjs,Angularjs Filter,我一直在尝试在angular controller中制作过滤器,它在过滤阵列时区分大小写 我的数据如下: var stoneArr = [ { "stone_name": "Diamond", "id": 16 }, { "stone_name": "Ruby", "id": 17 }, { "stone_name": "Sapphire", "id": 18

我一直在尝试在angular controller中制作过滤器,它在过滤阵列时区分大小写

我的数据如下:

var stoneArr = 
[
    {
        "stone_name": "Diamond",
        "id": 16
    },
    {
        "stone_name": "Ruby",
        "id": 17
    },
    {
        "stone_name": "Sapphire",
        "id": 18
    },
    {
        "stone_name": "Emerald",
        "id": 19
    }
];
<input type="text" name="stone_name" class="form-control" id="stone_name"
ng-model="propertyName" maxlength="15" required>
我的HTML输入如下:

var stoneArr = 
[
    {
        "stone_name": "Diamond",
        "id": 16
    },
    {
        "stone_name": "Ruby",
        "id": 17
    },
    {
        "stone_name": "Sapphire",
        "id": 18
    },
    {
        "stone_name": "Emerald",
        "id": 19
    }
];
<input type="text" name="stone_name" class="form-control" id="stone_name"
ng-model="propertyName" maxlength="15" required>
这里的陷阱是,当我在输入字段中输入“菱形”时

$scope.propertyName = "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); 

在内部,$filter执行一个循环。我将使用该比较执行单个函数,或者创建另一个特定过滤器