理解 ECMAScript 中的 reduce 和 reduceRight 方法

ECMAScript 中为数组提供了两个归并方法:reduce 和 reduceRight。这两个方法都会迭代数组的全部元素。并在此基础上返回一个最终的值。

reduce() 从数组左边开始迭代至数组末尾,reduceRight() 则从数组末尾迭代至数组左边。

介绍

reduce() 方法接收两个参数:

  • 每个元素都会执行的函数(归并函数);
    • 对于归并函数,接收 4 个参数:
      • prev:上一次归并函数的返回值
      • cur:当前值
      • index:当前值索引
      • arr:当前数组
  • 可选的归并初始值。提供这个值,该值就充当 prev。否则,prev 为数组的第一项,cur 为数组的第二项

代码实例

// 实现数组中所有值的累加
let values = [1, 2, 3, 4, 5];
let sum = values.reduce((prev, curr, index, arr) => prev + curr);
console.log(sum); // 15

上面代码没有提供归并初始值,所以最开始 prev 值为数组的第一项 1,cur 为数组的第二项 2。
迭代过程是这样的:

  • 第一次:prev(1),cur(2)
  • 第二次:prev(1 + 2),cur (3)
  • 第三次:prev(1 + 2 + 3),cur(4)
  • 第四次:prev(1 + 2 + 3 + 4),cur(5)

输出:1 + 2 + 3 + 4 + 5 = 15

// 实现数组中所有值的累加
let values = [1, 2, 3, 4, 5];
let sum = values.reduce(((prev, curr, index, arr) => prev + curr), 6);
console.log(sum); // 21

上面代码提供了归并初始值 6,所以最开始 prev 值为归并初始值 6,cur 为数组的第一项 1。
迭代过程是这样的:

  • 第一次:prev(6),cur(1)
  • 第二次:prev(6 + 1),cur (2)
  • 第三次:prev(6 + 1 + 2),cur(3)
  • 第四次:prev(6 + 1 + 2 + 3),cur(4)
  • 第五次:prev(6 + 1 + 2 + 3 + 4),cur(5)

输出:6 + 1 + 2 + 3 + 4 + 5 = 21

reduceRight() 和 reduce() 方法唯一不同的就是迭代的顺序,对于累加是不影响最后结果的。除此之外没有任何区别。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柯腾啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值