Angular.forEach循环无法正常工作

时间:2016-06-21 02:15:29

标签: javascript angularjs

PFB我的自定义过滤器的代码,其中参数viewbookoption是一个下拉值。 基于下拉值,数据将显示在网格中。我在这里实现了每个循环,但它不能正常运行并且它保持遍历循环并且给我接近10000条记录但实际上我只有10条记录应该显示在网格中。

非常感谢这方面的任何帮助。

    Controllers.filter('filterUnissued', function() {
     return function(books, viewbookoption) {
       if (viewbookoption == "All Books") {
         return books;
       } else {
         angular.forEach(books, function(book) {
           if (book.issued == false) {
             books.push(book);
           }
        });
      }
      return books;
    }
});

1 个答案:

答案 0 :(得分:3)

您正在将元素推送到现有的books数组。相反,你应该创建一个新的数组并推进它。像这样:

var filteredBooks = []
angular.forEach(books, function(book) {
   if (book.issued == false) {
     filteredBooks.push(book);
   }
});
return filteredBooks;

或者,更好的是,使用Array.filter.prototype方法:

return books.filter(function(book) {
  return book.issued === false;
});

(另外,总是使用===而不是==,除非你有充分的理由使用==。)