我发现了这个AngularJS代码,我不明白sum-function是如何工作的:
reduce
?.factory('Cart', function() {
var items = [];
return {
sum: function() {
return items.reduce(function(total, article) {
return total + article.price;
}, 0);
}
});
<table ng-show="cart.getItems().length" class="table">
<tr ng-repeat="item in cart.getItems() track by $index" class="cart-item">
<td>{{item.name}}</td>
<td>{{item.price | currency}}</td>
</tr>
<tr>
<td>{{cart.getItems().length}} Artikel</td>
<td>{{cart.sum() | currency}}</td>
</tr>
</table>
答案 0 :(得分:1)
答案:1 - &gt; Array.prototype.reduce()应用于数组,随后将遍历每个值,直到除非它减少为单个值。
语法:arr.reduce(callback,[initialValue])
答案:2 - &gt; Total是从上一次迭代返回的值,第二个参数是指迭代中的当前项[value]。
答案:3 - &gt; 0表示初始值,因为我们要做一个求和,我们需要从0开始初始化值。
答案 1 :(得分:1)
reduce()方法对累加器应用函数,并且数组的每个值(从左到右)必须将其减少为单个值。
reduce 对数组中的每个元素执行一次回调函数,不包括数组中的空洞,接收四个参数:初始值(或前一个回调调用的值),值当前元素,当前索引和正在进行迭代的数组。
Total是累加器,可以保存先前计算的值,0
是reduce
方法的初始值和第二个参数,因为它的语法是:
arr.reduce(callback,[initialValue]);
items.reduce
返回值 - 计算每个项目的总和,sum: return items.reduce
返回计算值。
文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce