【问题标题】:AngularJS Sum of an ArrayAngularJS 数组的总和
【发布时间】:2016-04-29 21:14:12
【问题描述】:

我在 AngularJS 中有一个数组,它是从 WCF 服务中获取的。 我可以使用下面的函数来实现数组的总和。 参考:Calculating sum of repeated elements in AngularJS ng-repeat

$scope.getTotal = function(){
    var total = 0;
    for(var i = 0; i < $scope.cart.products.length; i++){
        var product = $scope.cart.products[i];
        total += (product.price);
    }
    return total;
}

但是,没有过滤器有没有办法做到这一点?就像 $scope.cart.products.price.Sum()? 我已经在我的代码中使用了很多过滤器和函数,想要减少它的数量。

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    使用reduce

    $scope.cart.products.reduce(function(acc,current){
        return acc + current.price;
    },0);
    

    或者在 ES6 中:

    $scope.cart.products.reduce((acc,current) => acc + current.price, 0);
    

    检查here for MDN docs on reduce

    【讨论】:

    • 或 $scope.cart.products.reduce(function(sum,current){ return sum + current.price; }, 0);
    • acc(或先前的值)是先前在回调的最后一次调用中返回的值,或 initialValue,如果提供的话。在第二个循环中,它将是没有价格属性的数字
    猜你喜欢
    • 2017-11-08
    • 2014-12-04
    • 2015-12-16
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    相关资源
    最近更新 更多