js reduce累加器
reduce 是es6 新增的数组操作方法 意为累加器
使用方法如下
[1,1,1,1].reduce((total,currentValue,index)=>{
},initialValue)

initialValue 代表的是累加器的初始值 必填
total的值在初始情况下等于initialValue 用来接收返回的结果 必填
currentValue 代表数组中的每一项 必填
index 表示数组下标 可选
下面来看一个例子
let total = [2,2,2].reduce((pre,current,index)=>{
console.log(pre,index);
return pre+current;
},2)
console.log(total);//输出8

我们输出total 会发现它等于8 ,这里初始值是2,这就是将初始值与数组中的每一项进行累加的结果 也就是说,它是受初始值的影响,若我们将初始值改变累加器的结果也会不同
let total = [2,2,2].reduce((pre,current,index)=>{
console.log(pre,index);
return pre+current;
},1)
console.log(total);//输出7
点击并拖拽以移动
在上面这个例子里 current就等于数组中的每一项,index等于数组的下标,而pre表示的就是默认的初始值,但是这个值并不是一成不变的 每次累加后它的结果都会改变
默认情况下pre等于 2 ,这个值是我们定义的初始值
第一次 return pre+current, 等于4 ,然后将这个4返回给pre 所以这个时候pre不在是2 而是等于4
第二次 return pre+current, 因为在上一轮累加后pre已经等于4,所以这一次累加后pre等于6 了 然后以此类推
直到计算到数组最后一个值时 ,在将结果返回给累加器方法
也就是说 pre的值会随着每次累加而改变
我们可以在累加器里面打印一下pre 就能看出效果
let total = [2,2,2].reduce((pre,current,index)=>{
console.log(pre);//分别输出2 4 6
return pre+current;
},2)
console.log(total);//输出8

会分别输出2,4,6,没有输出8,这是因为计算到数组最后一个值时,会直接将结果返回给累加器方法,结束运算
这里需要注意 累加器的初始值不一定要是一个数字 可以是其他任何类型的数据,可以是一个数组,或是一个字符串都行,它不仅仅可以用来累加数值,还很多其他用法,
比如说我们还可以利用累加器的特性来将二维数组转换为一维数组
let arr = [[1,1,1],[2,2,2],[3,3,3]].reduce((pre,current,index)=>{
return pre.concat(current);
},[])
console.log(arr);

转换后的数组将会是一个一维数组
[1, 1, 1, 2, 2, 2, 3, 3, 3]
注:concat是数组拼接方法 可以将多个数组重新组合为一个新的数组
累加器的功能远不止这些,这里不多做赘述
js reduce累加器的更多相关文章
- how to remove duplicates of an array by using js reduce function
how to remove duplicates of an array by using js reduce function ??? arr = ["a", ["b& ...
- js的reduce累加器
reduce为数组中每一个元素执行回调函数,不包括被删除或未被赋值的 https://www.jianshu.com/p/e375ba1cfc47
- JS reduce()方法详解,使用reduce数组去重
壹 ❀ 引 稍微有了解JavaScript数组API的同学,对于reduce方法至少有过一面之缘,也许是for与forEach太强大,或者filter,find很实用,在实际开发中我至始至终没使用过 ...
- js reduce()方法使用
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值. reduce() 可以作为一个高阶函数,用于函数的 compose. 注意: reduce() 对 ...
- JS --- reduce()函数
定义: reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值.对空数组是不会执行回调函数的. 案例 计算数组总和 var num = [1,2,3,4,5 ...
- js reduce用法
let books = [ 0, {bookName:"python",price:10,count:1}, {bookName:"Ruby",count:2, ...
- js reduce
数组对象求和 let books = [ { id: 100, name: '红楼梦', price: 100 }, { id: 101, name: '西游记', price: 150 }, { i ...
- js reduce数组转对象
借鉴:https://juejin.im/post/5cfcaa7ae51d45109b01b161#comment这位大佬的处理方法很妙,但是我一眼看过去没有明白,细细琢磨了下,终于明白了 1 co ...
- js arguments 和 reduce求和
1.js arguments arguments 是一个对应于传递给函数的参数的类数组对象 function sum(){ ; ; i < arguments.length; i++){ sum ...
随机推荐
- Linux登录时,下游回显非常慢
问题现象 登录linux时,远程连接正常,[root@...]回显非常慢,在执行脚本时,很容易导致命令下发错乱 原因分析 家目录下的.bash_history文件太大,导致每次登陆时读取这个文件耗时太 ...
- 面试官:为什么 TCP 三次握手期间,客户端和服务端的初始化序列号要求不一样?
大家好,我是小林. 为什么 TCP 三次握手期间,客户端和服务端的初始化序列号要求不一样的呢? 接下来,我一步一步给大家讲明白,我觉得应该有不少人会有类似的问题,所以今天在肝一篇! 正文 为什么 TC ...
- git文件管理与索引,深入理解工作原理
前言 这一夜,注定是个不眠之夜,小白和cangls的对话已然进入了白热化.小白孜孜不倦的咨询关于git方面的知识,对索引越来越感兴趣.小白以前存的小电影文件可以进行版本的对比,探索哪个版本画质更好. ...
- 微服务架构 | 12.1 使用 Apache Dubbo 实现远程通信
目录 前言 1. Dubbo 基础知识 1.1 Dubbo 是什么 1.2 Dubbo 的架构图 1.3 Spring Cloud 与 Dubbo 的区别 1.4 Dubbo 的特点 1.5 Dubb ...
- golang中json格式化自定义日期格式
go 的time.Time,在json序列化是默认 2006-01-02T15:04:05Z07:00 的格式,十分不便, encoding/json包在序列化和反序列化的时候分别调用encode.g ...
- [WAF攻防]从WAF攻防角度重看sql注入
从WAF攻防角度重看sql注入 攻防都是在对抗中逐步提升的,所以如果想攻,且攻得明白,就必须对防有深刻的了解 sql注入的大体流程 Fuzz测试找到注入点 对注入点进行过滤检测,及WAF绕过 构建pa ...
- java接口概述及特点
1 package face_09; 2 3 4 5 6 abstract class AbsDemo{ 7 abstract void show1(); 8 abstract void show2( ...
- Typecho博客支持emoji表情设置
介绍 大家在typecho博客写文章时,很多人都喜欢使用emoji表情(比如这些图标)但是typecho的数据库类型默认不支持emoji编码,因为Emoji是一种在Unicode位于u1F601-u1 ...
- keepalived的抢占与非抢占模式
目录 一:keepalived的抢占与非抢占模式 1.抢占模式 2.非抢占模式 二:接下来分4种情况说明 三:以上3种,只要级别高就会获取master,与state状态是无关的 一:keepalive ...
- 第08讲:Flink 窗口、时间和水印
Flink系列文章 第01讲:Flink 的应用场景和架构模型 第02讲:Flink 入门程序 WordCount 和 SQL 实现 第03讲:Flink 的编程模型与其他框架比较 第04讲:Flin ...