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