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 ...
随机推荐
- 原生android webview 显示的H5页面颜色属性无法识别 - 具体解决心得
1.前言 background-color: #fc1717bf; 这个样式属性没毛病吧,浏览器都是支持的,但是在android 7.0 系统无法正确识别这个含有透明度的属性, 即bf无法识别,将默认 ...
- 通过js触发launch事件获取页面信息
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6814776265602499080/ 承接上一篇文档<页面Cookie的JS文件编写> 思路 继续之前 ...
- 包装类integer的常用方法
三种类型互转 (一): String 转换成 int 类型 调用 八大封装类 parseInt方法 结果可见 输出了223 成功转型 (二): int 转换成 String: 调用String类的 ...
- SYCOJ906瑞士轮
题目-瑞士轮 (shiyancang.cn) 模拟题 #include<bits/stdc++.h> using namespace std; const int N=1e5+520; i ...
- Git创建分支进行开发
一.业务场景 自己当前开发的项目算是一个中型项目,整个项目都是由自己一个人开发完成,主要有两个子项目,一个是小程序的后台,一个是小程序的后台管理系统. 因为从一开始就只有我一个人在进行开发,所以自己平 ...
- 【Java】方法
文章目录 何谓方法 方法的定义 方法调用 方法重载 命令行传参 可变参数 递归 何谓方法 System.out.println(),是什么 Java方法是语句的集合,它们在一起执行一个功能 方法是解决 ...
- mysql数据库优化1
目录 数据库结构的设计优化 1.数据库结构的设计 2.针对大型的数据量提前进行分库和分表 3.分库分表带来的问题 4.表结构设计注意的问题 查询优化 1.查询语句的注意事项 2.应尽量避免在 wher ...
- RBAC: K8s基于角色的权限控制
文章目录 RBAC: K8s基于角色的权限控制 ServiceAccount.Role.RoleBinding Step 1:创建一个ServiceAccount,指定namespace Step 2 ...
- Cesium源码剖析---视频投影
Cesium中的视频投影是指将视频作为一种物体材质,实现在物体上播放视频的效果.这个功能在Cesium早期版本中就支持了,在Code Example中有一个示例.今天就来分析一下其内部实现原理. 1. ...
- gin中只绑定url查询字符串
package main import ( "github.com/gin-gonic/gin" "log" ) type Person struct{ Nam ...