array的reduce

 

    ES5 (js 1.8)加入了 reduce

 

    接收一个函数,然后从左到右遍历item,直到reduce到一个值。

 

arr.reduce(callback, [initialValue]);

 

   参数:

 

  • callback(previousValue, currentValue, index, array)
  1. previousValue   如果指定了initialValue,那就用initialValue 或者 是上一次循环返回的值
  2. currentValue      当前执行到的数组的值
  3. index                   当前执行到的数组的下标
  4. array                    执行reduce的array

 

 

  • initialValue

     callback 调用时候的第一个参数

 

 

   我们来直观地看一个例子:

 


    
 

 

   第一次执行的reduce里面的callback的arguments的情况:

 


    
 

  我们看到,如果你指定了initialValue的化,第一次执行的时候,callback的第一个参数就是它,而index为0

 

 

 

   那如果没有指定initialValue呢?

 

 

     

 


     
 

   如果没有指定initialValue的化,第一次执行previousValue取arr[0],然后index为1

 

 

 

    那说了这么多,它有没有什么用?

 

 

  • 把一个数组里面的数字做加法:

 

 

[1,2,3,4].reduce(function(a, b) {
   return a + b;
});

 

 

  • 合并二维数组:
[[0,1], [2,3], [4,5]].reduce(function(a, b) {
    return a.concat(b);
});

 

 

  扩展阅读:

 

   http://msdn.microsoft.com/zh-cn/library/ie/ff679975(v=vs.94).aspx

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值