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累加器的更多相关文章

  1. 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& ...

  2. js的reduce累加器

    reduce为数组中每一个元素执行回调函数,不包括被删除或未被赋值的 https://www.jianshu.com/p/e375ba1cfc47

  3. JS reduce()方法详解,使用reduce数组去重

     壹 ❀ 引 稍微有了解JavaScript数组API的同学,对于reduce方法至少有过一面之缘,也许是for与forEach太强大,或者filter,find很实用,在实际开发中我至始至终没使用过 ...

  4. js reduce()方法使用

    reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值. reduce() 可以作为一个高阶函数,用于函数的 compose. 注意: reduce() 对 ...

  5. JS --- reduce()函数

    定义: reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值.对空数组是不会执行回调函数的. 案例 计算数组总和 var num = [1,2,3,4,5 ...

  6. js reduce用法

    let books = [ 0, {bookName:"python",price:10,count:1}, {bookName:"Ruby",count:2, ...

  7. js reduce

    数组对象求和 let books = [ { id: 100, name: '红楼梦', price: 100 }, { id: 101, name: '西游记', price: 150 }, { i ...

  8. js reduce数组转对象

    借鉴:https://juejin.im/post/5cfcaa7ae51d45109b01b161#comment这位大佬的处理方法很妙,但是我一眼看过去没有明白,细细琢磨了下,终于明白了 1 co ...

  9. js arguments 和 reduce求和

    1.js arguments arguments 是一个对应于传递给函数的参数的类数组对象 function sum(){ ; ; i < arguments.length; i++){ sum ...

随机推荐

  1. Linux 进程调度

    线程状态(context) 程序计数器(Program Counter),它表示当前线程执行指令的位置. 保存变量的寄存器. 程序的Stack.通常来说每个线程都有属于自己的Stack,Stack记录 ...

  2. Oracle 报 ORA-00054资源正忙的解决办法

    oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT 问题如下: SQL> conn scott/tiger@vm_database Connected to Oracle ...

  3. sql优化--尽可能少用like

    1.前言 like非常消耗性能,当搜索 like '%%' 的时候,仍然会对比全表信息后查找相关的数据, 2.如何优化? 使用动态标签 <if test="nickName != '% ...

  4. Jquery通过遍历数组给checkbox赋默认值

    需求:有一个数组:(北京菜,粤菜),checkbox如下: 现在想通过遍历这个数组,使数组里包含的值,在checkbox选中 代码: var flavors = new Array([北京菜 , 粤菜 ...

  5. GitHub 公布 2021 Top 10 博文「GitHub 热点速览」

    作者:HelloGitHub-小鱼干 2021 年在这周彻底同我们告别了,在本周的「News 快读」模块你可以看到过去一年 GitHub 的热门文章,其中有我们熟悉的可能让很多程序员"失业& ...

  6. 【PTA】字符串正反序连接

    将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中. 函数接口定义: void fun (char *s, char *t); 其中s 和t都是用户传入的参数.函数将s所指字符串的正序 ...

  7. 免费增加几个T电脑空间方法,拿去不谢

    大家好,我是咔咔 不期速成,日拱一卒 在刷吾爱时猛然间看到一篇帖子名为,免费增加几个T电脑空间方法,拿去不谢,作为一名电脑磁盘深度缺乏者,这种文章怎能逃离我的法眼. 点进去大概瞅了一眼,大致意思就是把 ...

  8. Android开发 海康威视 多路视频播放(同时播放视频)

    原文地址:Android开发 海康视频 多路视频播放 | Stars-One的杂货小窝 最近公司有个项目需要对接到海康监控摄像头来实现对应的实时播放和回放,但这两个不是我们今天要讨论的重点,APP首页 ...

  9. Parallel.For实现

    static class MyParallel { //4.0及以上用Task, Task的背后的实现也是使用了线程池线程 //static List<Task> tasks = new ...

  10. Google插件开发探索

    简单的开始 https://blog.lateral.io/2016/04/create-chrome-extension-modify-websites-html-css/ 基础教程 https:/ ...