【问题标题】:how to make angular $filter to filter a case sensitive string comparators如何使角度 $filter 过滤区分大小写的字符串比较器
【发布时间】:2016-09-23 13:53:45
【问题描述】:

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

我的数据如下:

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);

这里的陷阱是当我在输入字段中输入“钻石”时

$scope.propertyName = "diamond";

过滤器不匹配此字符串与“钻石”。

我不想从等式中删除完全匹配条件(真),如下所示:

var stoneObj = $filter('filter')(stoneArr, {stone_name:$scope.propertyName}); //This won't work for me

这对我不起作用,因为我想匹配确切的字符串来过滤数据。并且数据将具有唯一的“stone_name”值。另外我不想使用任何循环,因为数组长度将超过 1000+。无论如何我可以做到这一点吗?

【问题讨论】:

  • 内部 $filter 执行循环。我会用那个比较做一个函数,或者创建另一个特定的过滤器

标签: javascript angularjs angularjs-filter


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    相关资源
    最近更新 更多