为什么使用for循环要比some()或filter()更快。

4 浏览
0 Comments

为什么使用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方法更快。

0