
JS数组方法
发布日期:2021-05-28 16:24:11
浏览次数:32
分类:精选文章
本文共 1212 字,大约阅读时间需要 4 分钟。
数组的 reduce 方法是一个高级的迭代方法,在 JavaScript 中非常实用。它可以用于将数组中的元素聚合成一个值,主要有两种调用方式:带初始值调用和不带初始值调用。这两种方式在迭代次数上有所不同,理解它们的区别对于优化代码非常重要。
带初始值调用
带初始值调用时,第一个参数是函数中的起始值。在这种情况下,函数第一个执行时会将第一个元素作为 pre
,第二个元素作为 next
,然后依次处理后续的元素。这样处理的结果是数组中的每个元素都会被处理一次,共进行了 arr.length
次迭代。
例如,在下面的代码中:
let arr = [1,2,3,4,5];let result = arr.reduce((pre, next) => { return pre + next;}, 13);
- 第一次调用:
pre = 13
,next = 1
→ 返回14
- 第二次调用:
pre = 14
,next = 2
→ 返回16
- 第三次调用:
pre = 16
,next = 3
→ 返回19
- 第四次调用:
pre = 19
,next = 4
→ 返回23
- 第五次调用:
pre = 23
,next = 5
→ 返回28
最终结果为 28
,这表明带初始值调用会对数组的全部元素执行操作,保持了数组长度的迭代次数。
不带初始值调用
不带初始值调用时,第一个参数是函数内部的触发条件,函数会在 Array.prototype.keys
的值满足数组元素存在时进行调用。在这种情况下,第一次调用时,pre
是 arr[0]
,next
是 arr[1]
,然后依次处理后续的元素。这样处理的结果是只对 arr.length - 1
次元素进行操作。
例如,在下面的代码中:
let arr = [1,2,3,4,5];let result = arr.reduce((pre, next) => { return pre + next;});
- 第一次调用:
pre = 1
,next = 2
→ 返回3
- 第二次调用:
pre = 3
,next = 3
→ 返回6
- 第三次调用:
pre = 6
,next = 4
→ 返回10
- 第四次调用:
pre = 10
,next = 5
→ 返回15
最终结果为 15
,这表明不带初始值调用将只对数组中 n-1
个元素执行操作,根据数组长度进行调整。
总结
在 JavaScript 中,Array.prototype.reduce
方法提供了两种重要的调用方式:带初始值和不带初始值。带初始值调用时,数组的全部元素都会被处理一次,包括初始值本身,共计进行 arr.length
次迭代。而不带初始值调用时,只有 arr.length - 1
次迭代,这在处理数组的聚合任务时极为重要,尤其是在需要精确控制迭代次数时。理解这两种方式的区别,有助于在代码编写时实现更高效、更可靠的逻辑。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月23日 12时57分51秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ISTA算法-图像压缩感知算法之ISTA算法
2019-03-14
带照片捕捉功能的ESP32-CAM PIR运动检测器
2019-03-15
ARM Mbed RFID读取器
2019-03-15
如何使用SSH远程管理Linux服务器
2019-03-15
降级到旧版本macOS的3种方法
2019-03-15
学习Vue.js2.0(国外视频教程)
2019-03-15
在FPGA板上实现数字时钟的VHDL代码
2019-03-15
wxPython和PyOpenGL视频
2019-03-15
精美的湿度和温度传感器
2019-03-15
在30分钟内学习PHP
2019-03-15
软考高项之风险管理-攻坚记忆
2019-03-15
Spark程序运行常见错误解决方法以及优化
2019-03-15
Python http.server 服务器
2019-03-15
Python svm 支持向量机
2019-03-15
OpenStack 最小化安装配置(一):物理机网桥配置
2019-03-15
shell中将字符中换行符'\n'替换为空格
2019-03-15
PS快速美白照片
2019-03-15
ubuntu 16.04 镜像下载
2019-03-15
CUDA9.1、cuDNN7在Ubuntu16.04上的安装
2019-03-15