JS reduce函数

定义和用法

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

array.reduce(function(prev, cur, currentIndex, arr), initialValue)
:param function(prev, cur, index, arr) 必需。用于执行每个数组元素的函数。
函数参数:
    prev:   必需。初始值, 或者计算结束后的返回值。
    cur:  必需。当前元素
    currentIndex:  可选。当前元素的索引
    arr:  可选。当前元素所属的数组对象。
:param initialValue: 可选。传递给函数的初始值

注意:没有第二个参数的时候prev初始值默认为数组的第一项,此时循环从数组的第二项开始,有第二个参数的时候prev为第二个参数值,此时循环从数组的第一项开始。

常见应用:

1. 求和:
const arr = [15, 19, 10, 14, 26, 8];
const total = arr.reduce((prev, cur) => {
    return prev + cur
})
console.log(total)//数组的和
2. 求平均
const arr = [15, 19, 10, 14, 26, 8];
const avg= arr.reduce((prev, cur, index, array) => {
     prev += cur
     if( index === array.length-1) { 
        return prev/array.length;
      }else { 
        return prev;
      } 
})
3. 求元素出现的次数
const arr = ['banana', 'cherry', 'orange', 'apple', 'cherry', 'orange', 'apple', 'banana', 'cherry', 'orange', 'fig' ];
const total = arr.reduce((prev, cur) => {
    prev[cur] = (prev[cur] || 0) + 1
    return prev
}, {})
4. 将二维数组转换为一维数组
const data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
const flat = data.reduce((prev, cur) => {
    return prev.concat(cur)
}, [])
5. 求数组最大值
const num = [1, 2, 3, 5, 5, 1]
const max_num = num.reduce((prev, cur) => {
    return Math.max(prev, cur)
})
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 庸人自扰到不一定是坏事,可怜确是碌碌无为,感叹平凡可贵,被时间推赶向前,被命运压负永远。 曾经所有的努力都只是邀宠...
    Je_随景阅读 316评论 1 2
  • 春夜喜雨 杜甫(唐) 好雨知时节,当春乃发生。 随风潜入夜,润物细无声。 野径云俱黑,江船火独明。 晓看红湿...
    浅蓝_6bce阅读 335评论 2 6
  • 竟然还是会去知乎搜索失恋后觉得人生无意义该怎么办的话题,只能说不学习不工作时间废得太多。不过这好像确实是我自己的真...
    齐祖阅读 172评论 0 0