Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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
Angularjs 如何优化我的.filter函数,以便更快地完成过滤?_Angularjs - Fatal编程技术网

Angularjs 如何优化我的.filter函数,以便更快地完成过滤?

Angularjs 如何优化我的.filter函数,以便更快地完成过滤?,angularjs,Angularjs,我有几个.filter函数,下面有两个。这些都是工作和做他们的本意。我遇到的问题是,他们需要一些时间来进行过滤,因为他们必须迭代来自后端的记录。目前的设置方式是后端返回总共大约400条记录。不知道为什么不只是返回结果的第一页(或前几页),返回所有结果只是为了方便对所有记录进行分页似乎有点过分,但这不是我的决定 选中各种复选框时,会对所选复选框执行筛选,这会让人感觉有点慢,因为选中其中一个复选框时,会在执行筛选时花很短但明显的时间勾选复选框 如何优化此代码以使其运行更快?为此,是否值得使用下划线.

我有几个
.filter
函数,下面有两个。这些都是工作和做他们的本意。我遇到的问题是,他们需要一些时间来进行过滤,因为他们必须迭代来自后端的记录。目前的设置方式是后端返回总共大约400条记录。不知道为什么不只是返回结果的第一页(或前几页),返回所有结果只是为了方便对所有记录进行分页似乎有点过分,但这不是我的决定

选中各种复选框时,会对所选复选框执行筛选,这会让人感觉有点慢,因为选中其中一个复选框时,会在执行筛选时花很短但明显的时间勾选复选框

如何优化此代码以使其运行更快?为此,是否值得使用
下划线.js

.filter('rangeFilter', function() {
   return function(hotelResults, price ) {

    var filtered = [];
    var priceMin = parseInt(price.min);
    var priceMax = parseInt(price.max);

    angular.forEach(hotelResults, function(hotel) {
      if((hotel.Price >= priceMin && hotel.Price <= priceMax)) {
        filtered.push(hotel);
      }
    });

    return filtered;
  };
})


.filter('ratingsFilter', function() {
  return function(hotelResults, ratings) {
    filteredResults = []
    angular.forEach(hotelResults, function(hotel) {
      angular.forEach(ratings, function(rating) {
        if (hotel.Rating === rating.value && rating.selected === true) {
          filteredResults.push(hotel)
        }
      })
    })
    return filteredResults;
  }
})
.filter('rangeFilter',function(){
返回功能(酒店结果、价格){
var筛选=[];
var priceMin=parseInt(price.min);
var priceMax=parseInt(price.max);
角度。forEach(酒店结果、功能(酒店){

如果((hotel.Price>=priceMin&&hotel.Price对于第一个代码片段,我没有看到任何优化

对于第二个问题,我想你可以提高时间复杂度

这将时间复杂度从
O(n.m)
提高到
O(n+m)

.filter('ratingsFilter', function() {
  return function(hotelResults, ratings) {
    var filteredResults = [];
    var ratingsHash = {};

    angular.forEach(hotelResults, function(hotel) {
      if (!(hotel.Rating in ratingsHash)) {
          ratingsHash[hotel.Rating] = [];
      }

      ratingsHash[hotel.Rating].push(hotel);
    });

    angular.forEach(ratings, function(rating) {
        if ((rating.value in ratingsHash) && rating.selected === true) {
          var hotels = ratingsHash[rating.value];
          Array.prototype.push.apply(filteredResults, hotels);
        }
      })

    return filteredResults;
  }
})