当前位置: 首页 > news >正文

一文学会数组的reduce()和reduceRight()

reduce()方法和reduceRight()方法依次处理数组的每个成员,最终累计为一个值。
它们的差别是,reduce()是从左到右处理reduceRight()则是从右到左,其他完全一样。

[1, 2, 3, 4, 5].reduce(function (a, b) {console.log(a, b);return a + b;
})
// 1 2
// 3 3
// 6 4
// 10 5
//最后结果:15

上面代码中,reduce()方法用来求出数组所有成员的和。reduce()的参数是一个函数,数组每个成员都会依次执行这个函数。如果数组有 n 个成员,这个参数函数就会执行 n - 1 次。

  • 第一次执行:a是数组的第一个成员1,b是数组的第二个成员2。
  • 第二次执行:a为上一轮的返回值3,b为第三个成员3。
  • 第三次执行:a为上一轮的返回值6,b为第四个成员4。
  • 第四次执行:a为上一轮返回值10,b为第五个成员5。至此所有成员遍历完成,整个方法的返回值就是最后一轮的返回值15。

reduce()方法和reduceRight()方法的第一个参数都是一个函数。该函数接受以下四个参数

  1. 累积变量。第一次执行时,默认为数组的第一个成员;以后每次执行时,都是上一轮的返回值。
  2. 当前变量。第一次执行时,默认为数组的第二个成员;以后每次执行时,都是下一个成员。
  3. 当前位置。一个整数,表示第二个参数(当前变量)的位置,默认为1。
  4. 原数组。

这四个参数之中,只有前两个是必须的,后两个则是可选的。

[1, 2, 3, 4, 5].reduce(function (a,   // 累积变量,必须b,   // 当前变量,必须i,   // 当前位置,可选arr  // 原数组,可选
) {// ... ...

如果要对累积变量指定初值,可以把它放在reduce()方法和reduceRight()方法的第二个参数

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

上面代码指定参数a的初值为10,所以数组从10开始累加,最终结果为25。注意,这时b是从数组的第一个成员开始遍历,参数函数会执行5次。

建议总是加上第二个参数,这样比较符合直觉,每个数组成员都会依次执行reduce()方法的参数函数。

http://www.lryc.cn/news/56089.html

相关文章:

  • 登录校验-Filter
  • C C++ Java python 分别写出不同表白girlfriend的爱心动态代码实现
  • ThreeJS-投影、投影模糊(十七)
  • 蓝桥杯赛前冲刺-枚举暴力和排序专题1(包含历年蓝桥杯真题和AC代码)
  • Github库中的Languages显示与修改
  • RocketMQ消息高可靠详解
  • 【python设计模式】4、建造者模式
  • 【全网独家】华为OD机试Golang解题 - 机智的外卖员
  • Sentinel滑动时间窗限流算法原理及源码解析(中)
  • 【OpenLayers】VUE+OpenLayers+ElementUI加载WMS地图服务
  • linux 命名管道 mkfifo
  • Redis(主从复制、哨兵模式、集群)概述及部署
  • windows下软件包安装工具之Scoop安装与使用
  • 九龙证券|人工智能+国产软件+智慧城市概念股火了,欧洲资管巨头大举抄底
  • Nacos下载安装与配置(windows)
  • QT学习笔记(语音识别项目 )
  • Vulnhub:DC-4靶机
  • 序列差分练习题--从模板到灵活运用
  • Xshell 连接 Ubuntu 20.04
  • 【网口交换机:交换机KSZ9897学习-笔记-资料汇总-记录】
  • linux信号量及其实例
  • Nomogram | 盘点一下绘制列线图的几个R包!~(一)
  • 两个数组的交集(力扣刷题)
  • SonarQube 10.0 (macOS, Linux, Windows) - 清洁代码 (Clean Code)
  • 怎么统一把文件名不需要部分批量替换掉
  • Vue3电商项目实战-结算支付 3【05-结算-收货地址-添加、06-结算-收货地址-修改、07-结算-提交订单】
  • 开心档之开发入门网-C++ 变量作用域
  • 蓝易云:linux怎么关闭防火墙详细教程
  • 操作系统-用户进程
  • 小驰私房菜_07_camx EIS使能