减少阵列上的方法 - 它是如何工作的?

时间:2014-08-08 08:21:27

标签: javascript arrays angularjs

我发现了这个AngularJS代码,我不明白sum-function是如何工作的:

  1. 什么是reduce
  2. 如何设置或保存参数toral?
  3. 为什么最后会有'0'?
  4. 的JavaScript

    .factory('Cart', function() {
        var items = [];
        return {
            sum: function() {
                return items.reduce(function(total, article) {
                return total + article.price;
            }, 0);
        }
     });
    

    HTML

    <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>
    

2 个答案:

答案 0 :(得分:1)

  

答案:1 - &gt;   Array.prototype.reduce()应用于数组,随后将遍历每个值,直到除非它减少为单个值。

     

语法:arr.reduce(callback,[initialValue])

     

答案:2 - &gt;   Total是从上一次迭代返回的值,第二个参数是指迭代中的当前项[value]。

     

答案:3 - &gt;   0表示初始值,因为我们要做一个求和,我们需要从0开始初始化值。

答案 1 :(得分:1)

减少(ES5的一部分)

  

reduce()方法对累加器应用函数,并且数组的每个值(从左到右)必须将其减少为单个值。

     

reduce 对数组中的每个元素执行一次回调函数,不包括数组中的空洞,接收四个参数:初始值(或前一个回调调用的值),值当前元素,当前索引和正在进行迭代的数组。

总计为参数,0

Total是累加器,可以保存先前计算的值,0reduce方法的初始值和第二个参数,因为它的语法是:

arr.reduce(callback,[initialValue]);

它是如何工作的?

items.reduce返回值 - 计算每个项目的总和,sum: return items.reduce返回计算值。

文档https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce