javascript - 列表的自定义过滤器

标签 javascript regex angularjs

我正在尝试创建一个过滤器,以仅显示列表中与用户输入匹配的元素。

.filter('removeAcentos', function(){

    return function (source, item) {
    var re = new RegExp("" + item.toLowerCase() + "");
        angular.forEach(source, function(word){
            if(re.test(word.nomeCurso.toLowerCase()) === true){
                return true;
            }
        });
      //
        return false;
    };
})

在 View 上:

<li ng-repeat="curso in ctrl.list| removeAcentos: ctrl.input ">
    ... <!-- display items from ctrl.list that match ctrl.input -->
</li>

但是,我不明白为什么它不起作用。我测试了正则表达式,过滤器函数返回 true 以获得正确的值。有什么想法吗?

最佳答案

您的函数不返回数组。该函数唯一返回的是 false

forEach 确实也不是适合这项工作的工具。尝试使用 Array.prototype.filter() 并记住返回新数组:

.filter('removeAcentos', function(){

    return function (source, item) {
       if(!source){
          return false;
       }  
        var re = new RegExp("" + item.toLowerCase() + "");
       // return filtered array
       return source.filter( function(word){
            return re.test(word.nomeCurso.toLowerCase());
        });

    };
})

关于javascript - 列表的自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32107441/

相关文章:

javascript - Moris 图表为条形图交替颜色

javascript - 访问javascript对象中的内部变量

python - 正则表达式不匹配任何组,第一组或第二组,但不能同时匹配。类似于 'NAND'

javascript - AngularJS 路由器在最初加载特定 URL 时调用函数

javascript - 从 Javascript 源创建数据表

javascript - 如何扩展Vue Storefront核心模块

regex - 从字符串 Powershell 中获取匹配项

java - 用于验证文件的正则表达式或函数?

javascript - Protractor id 点击不起作用

css - AngularJS - 无法删除单击时添加的添加的 css 类