为什么使用for循环要比some()或filter()更快。
为什么使用for循环要比some()或filter()更快。
我尝试了两种不同的方法来做某事,对性能结果感到惊讶:
我有两个版本的函数:
使用for
:
$scope.hasBlockResult = function (IS, area, block) { if (!block) return false; for (var i = 0; i < $scope.filteredCartoList.length; i++) { if ($scope.filteredCartoList[i].informationSystem === IS && $scope.filteredCartoList[i].area === area && $scope.filteredCartoList[i].block === block) return true; } return false; };
以及使用some()
函数:
$scope.hasBlockResult = function (IS, area, block) { if (!block) return false; return ($scope.filteredCartoList.some(function (carto) { if (carto.informationSystem === IS && carto.area === area && carto.block === block) return true; return false; })); };
同样的情况也出现在这里:
在for
方法中:
for (var i = 0; i < $scope.filteredCartoList.length; i++) { if ($scope.filteredCartoList[i].informationSystem == IS && $scope.filteredCartoList[i].type != 'AM' && $scope.filteredCartoList[i].type != 'IF' && $scope.filteredCartoList[i].area == area && $scope.filteredCartoList[i].block == block) $scope.resultList.push($scope.filteredCartoList[i]); }
和filter()
方法中:
$scope.resultList = $scope.filteredCartoList.filter(function (carto) { if (carto.informationSystem == IS && carto.type != 'AM' && carto.type != 'IF' && carto.area == area && carto.block == block) return true; return false; });
我期望filter()
和some()
方法比for
方法更快,但是根据angularjs batarang性能选项卡显示,在这两种情况下,for
方法更快。