数组的 reduce方法

reduce() 方法对数组中的每个元素按序执行一个由你提供的 reducer 函数,每次运行都会 将先前元素的计算结果作为参数传入,最后将其结果 汇总为单个返回值

当第一次执行这个回调函数的时候,不存在 “上一次计算的结果”,所以如果需要回调函数从数组索引为 0 的元素开始执行,就需要传递 初始值 否则索引号为 0 的元素将会被 作为初始值 initialValue,迭代器将从第二个元素开始执行

语法:

// 箭头函数写法Array.reduce((perviousValue,currentValue) => { *** })Array.reduce((perviousValue,currentValue,currentIndex) => { *** })Array.reduce((perviousValue,currentValue,currentIndex,array) => { *** })Array.reduce((perviousValue,currentValue,currentIndex,array) => { *** },initialValue)
// 普通函数写法...Array.reduce(function(perviousValue,currentValue,currentIndex,array){ *** },initialValue)

参数:

数组 reduce 方法,包含四个参数:
  • perviousValue:上一次的计算结果的返回值
  • currentValue:数组中正在处理的元素。若指定了初始值,则值则为数组索引为 0 的元素,否则为 1
  • currentIndex:数组中正在处理的元素的索引。若指定了初始值,则起始索引为 0,否则为 1
  • array:被遍历的对象数组

  • initialValue(可选):此参数作为第一次调用函数时参数 previousValue 的值,
  • 若指定了初始值 initialValue,则 currentValue 则将使用数组第一个元素;
  • 否则 perviousValue 将使用数组的第一个元素,而 currentValue 将使用数组第二个元素

示例:

1. 计算数组所有元素的总和
    // 定义了一个初始值(也可以直接在参数后面直接写)const initialValue = 0; // 定义了一个数组const sum = [0,1,2,3,4,5,6];  // 开始循环计算// 接收一个返回值const sumTotal = sum.reduce(function(previousValue,currentValue){  return perviousValue + currentValue},initialValue)// 打印总和console.log('sumTotal:' + sumTotal)  // sumTotal:21
2. 累加对象数组的值

注意:如果要累加对象数组中包含的值,必须 提供 initialValue 初始值

 // 创建初始值const initialValue = 0;// 定义一个数组const arr = [{x:1},{x:2},{x:3},{x:4}];// 开始循环累加数组里面的每一个对象下的 xconst sumTotal = arr.reduce(function(previousValue,currentValue){return previousValue + currentValue.x  // 对象.x 拿到里面的每一个 x 属性},initialValue)// 打印总和console.log('sumTotal:' + sumTotal);  // sumTotal:10

数组的 reduce方法相关推荐

  1. 【JavaScript】查漏补缺 —数组中reduce()方法

    [JavaScript]查漏补缺 -数组中reduce()方法

  2. 数组求和-reduce方法

    function sum(...numbers){return numbers.reduce((pre,current)=>{return pre + current}) } console.l ...

  3. 数组的reduce方法

    reduce方法有两个参数,第一个参数是操作数组项的函数:第二个参数则是传入的初始值,reduce最常用的方法是叠加,以下例子可以看出,reduce函数根据初始值0,不断的叠加数组项: var ite ...

  4. 提升代码格调——JavaScript 数组的 reduce() 方法入门

    基本概念 reduce() 方法为数组中的每一个元素依次执行回调函数(不包括数组中被删除或从未被赋值的元素),返回一个具体的结果. 语法 reduce() 接收两个参数,其基本语法为: arr.red ...

  5. 数组reduce方法详解

    目录 前言 reduce方法 案例 数组求和 数组扁平化 数组去重 数组对象去重 前言 很多前端开发中都知道数组的reduce方法可以用来给数组求和,但是你问到里面的具体参数代表的时候什么,很多人却不 ...

  6. reduce方法 实现数组对象中 每三个属性相加 形成新数组

    需求: 数据格式: 每三个时间点的count属性值相加,形成新的数组:[] // 原数组 aList const aList = [{ time: '2023-83-17 01:80:00', cou ...

  7. JavaScript数组属性和方法

    数组 字面量声明数组 let arr = [1,2,3,4] 构造函数声明数组 let arr = new Array(1,2,3) arr[0] = "a" arr[1] = & ...

  8. JS进阶篇--JS数组reduce()方法详解及高级技巧

    基本概念 reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. reduce 为数组中的每一个元素依次执行回调函数,不包括数组中被 ...

  9. js中every用法_js数组中的方法 some, every, filter, find,map, reduce讲解及使用场景

    前言 之前对数组的循环来说,我拿到代码就使用forEach循环,主要原因是我对数组的其他方法不是很了解,以及觉得forEach已经可以做到想要的效果,没必要在去使用其他方法,这都是对使用场景不了解导致 ...

最新文章

  1. Linux运维课程-Mysql之复制(2)
  2. 日常生活小技巧 -- 文件对比工具 Beyond Compare
  3. redis入门——Spring整合篇
  4. 优雅 | koa处理异常
  5. php加载lrc,javascript - 【求助】php如何获取虾米网的LRC地址?
  6. 描述文件安装失败无法连接到服务器_打开steam为什么提示无法连接至steam网络?...
  7. 酒店结婚播放PPT模板
  8. java音乐播放器脚本之家,HTML5音乐播放器skPlayer
  9. masquerade词根词缀_常用词根和词缀.doc
  10. 德国人的数学题375=1
  11. android bugly qq,Android如何快速集成腾讯Bugly
  12. unity 控制对象移动、旋转
  13. 干货全拿走-用Excel获取上证指数等50+股指行情及历史数据
  14. pr预设的卷及内核锐化是什么_PR内置特效合集
  15. 【算法思考】双目视差求像素深度公式理解
  16. [转]数据的游戏:冰与火
  17. 【php】注册系统和使用Xajax即时验证用户名是否被占用
  18. HTML+CSS实现商品介绍模考(以Apple14为案例)
  19. gson线上环境解析日期时报错JsonSyntaxException
  20. 芝加哥大学计算机专业排名,芝加哥大学计算机排名

热门文章

  1. android 边录制视频边写软字幕
  2. 闲鱼Flutter互动引擎系列——整体设计篇
  3. css 边框太粗_9个很棒的CSS边框技巧
  4. 如何在Polygon上创建ERC-20通证
  5. 完美解决Error:java: 无效的源发行版: 12
  6. 初学SSM框架多长时间能学会?
  7. Div居中的几种方法,Div absolute居中
  8. 服务发现的基本原理与比较:Eureka vs Consul vs Zookeeper
  9. 从 MMU 看内存管理
  10. springboot改文件头_SpringBoot中实现文件上传下载的三种解决方案(推荐)