2016-04-29 15 views
3

私はAngularJSで配列を持っていますが、これはWCFサービスから取得しています。 以下のような関数を使って配列の和を求めることができます。 参照:Calculating sum of repeated elements in AngularJS ng-repeatAngularJS配列の合計

$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()のように? 私はすでに自分のコードで非常に多くのフィルタと関数を使いましたが、その数を減らしたいと思います。

答えて

6

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

+0

または$ scope.cart.products.reduce(関数(合計電流){ 戻り和+ current.price; }、0); –

+0

良い点!編集済み –

+0

acc(または以前の値)は、コールバックの最後の呼び出しで以前に返された値、または指定されている場合はinitialValueです。 2番目のループでは、それは価格のプロパティなしの数字になります –