Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 列表的自定义筛选器_Javascript_Regex_Angularjs - Fatal编程技术网

Javascript 列表的自定义筛选器

Javascript 列表的自定义筛选器,javascript,regex,angularjs,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.toL

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

.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;
    };
})
在这方面:

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

  • 然而,我不明白为什么它不起作用。我测试了regex,filter函数返回正确值的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());
            });
    
        };
    })
    

    美好的但是我正在使用另一个过滤函数,我希望尽可能减少cpu消耗。考虑到cpu消耗,每个过滤器都值得使用吗?无论哪种方法都会创建一个循环,您的forEach并没有做任何事情来创建要返回的数组