当前位置:网站首页>.reduce()的简单例子
.reduce()的简单例子
2022-08-09 01:39:00 【木豆mudou】
求[1,2,3].reduce((a,b) => console.log(a,b))的输出结果?
写这篇文章的原因是看到 ↑ 这道题目, 打印结果是
4 5
undefined 1
undefined
当时就很疑惑怎么会打印出undefined这个奇怪的结果出来
我们先来看看reduce的定义:
定义和用法
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
reduce() 可以作为一个高阶函数,用于函数的 compose。
注意: reduce() 对于空数组是不会执行回调函数的。
语法
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数 | 描述 |
---|---|
total | 必需。初始值, 或者计算结束后的返回值。 |
currentValue | 必需。当前元素 |
currentIndex | 可选。当前元素的索引 |
arr | 可选。当前元素所属的数组对象。 |
initialValue | 可选。传递给函数的初始值 |
------------------------------以上是reduce的介绍------------------------------
可以看看以下几个例子
代码块一:
[4,5,1].reduce((a,b) => console.log(a,b);)
console result ==>
4 5
undefined 1
undefined
代码块二:
[4,5,1].reduce((a,b) => {console.log(a,b);return a+b;})
console result ==>
4 5
9 1
10
代码块三:
=======> 1:
[4,5,1].reduce((a,b) => {console.log(a,b);return a+b;},0)
console result ==>
0 4
4 5
9 1
=======> 2:
[4,5,1].reduce((a,b) => {console.log(a,b);return a+b;},5)
console result ==>
5 4
9 5
14 1
可以看出, 打印出undefined的代码块一中, 没有return, 而reduce语法中, 如果要相加, 是需要设定返回值的–>total | 必需。初始值, 或者计算结束后的返回值 。由于此代码块中没有进行return操作, 才会有undefined这种值的出现
而代码块二和代码块三-1的区别是, 三添加了initialValue参数, 这个参数的作用是设置传递给函数的初始值 , 当不设定的时候, initialValue会从index为1的下标数值开始(如代码块二)
而代码块三-1和代码块三-2中也可以看出区别, initialValue设置为0时, 对于数据的结果是没有影响的, 而设置为5时, 即设置5为初始值进行相加操作
当然, 除了相加等简单数学操作, reduce还有更多高级的使用方式, 例如数组去重, 数组合并等等, 以下为其他博主的传送门:
reduce的其他高级操作
边栏推荐
- LeetCode每日一题:搜索插入位置 (均1200道)方法:二分查找
- C语言-大端存储和小端存储
- 保护您的 Web 应用程序的最佳开源 Web 应用程序防火墙
- 【元胞自动机】基于元胞自动机模拟社会力因素下的灾害人员疏散应急仿真附matlab代码
- 德语翻译-德语在线批量翻译软件
- 《LC刷题总结》——贪心
- WPF效果第一百九十四篇之伸缩面板
- 网络安全基础-基本dos命令(一)
- The server quit without updating PID file (/usr/local/mysql/data/localhost.pid).
- 设计师设计相关图表时,如何运用设计技巧与合理的用户体验?【大屏可视化(PC端、移动端)】
猜你喜欢
《LC刷题总结》——贪心
OpenSceneGraph3.5.1编译
软件测试的调用接口怎么调用,逻辑是什么?
[Cellular Automata] Simulation of emergency evacuation of disaster personnel under social force factors based on cellular automata with matlab code attached
全文翻译:欧盟第29条数据保护工作组 数据保护官指南
深度学习模型的两种部署:ONNX与Caffe
class path resource [bean.xml] cannot be opened because it does not 错误解决方案
4-8 Matplotlib库 雷达图
走向合规化的虚拟人直播
makefile file compilation
随机推荐
猿辅导联合多方专家共议新课标:语文将更强调“实践性”
Proe/Creo智能硬件产品结构设计要点「干货分享」
基于机器学习之模型树短期负荷预测(Matlab代码实现)
How SEMRush finds keywords for advertising
requestAnimationFrame实现浏览器动画
Bugs encountered in remote control projects
Loadrunner结合Fiddler实现脚本的录制
Wireshark packet capture tool
Go-7-RESTful API的设计
Phenomenon 1 during RF debugging
d初化模板构造器
全文翻译:欧盟第29条数据保护工作组 数据保护官指南
易周金融分析 | 互联网系小贷平台密集增资;上半年银行理财子公司综合评价指数发布
ABAP 报表中如何以二进制方式上传本地文件
WPF效果第一百九十四篇之伸缩面板
4-11 Matplotlib 配置
右键新建缺少word、excel选项问题处理
ICMP差错报告报文数据字段
Introduction to LVGL (based on v8.1-8.2)
[机缘参悟-65]:《兵者,诡道也》-6-孙子兵法解读-并战计