基本概念:

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

简单来说就是:执行传入函数,函数的返回值作为下一次的参数。

参数

reduce方法接受两个参数:reduce(callback,initialValue)
callback: functon(previousValue,currentValue,currentIndex,array)
四个参数的含义:
previousValue:上一次调用 callbackFn 时的返回值。在第一次调用时,若指定了初始值 initialValue,其值则为 initialValue,否则为数组索引为 0 的元素 array[0]。
currentValue:数组中正在处理的元素。在第一次调用时,若指定了初始值 initialValue,其值则为数组索引为 0 的元素 array[0],否则为 array[1]。
currentIndex:数组中正在处理的元素的索引。若指定了初始值 initialValue,则起始索引号为 0,否则从索引 1 起始。
array:用于遍历的数组。

实际用途

// 求数组元素的和
let sum = [0, 1, 2, 3].reduce(function (previousValue, currentValue) {return previousValue + currentValue
}, 0)
// 结果为6
// 累加对象数组里的值
let initialValue = 0
let sum = [{x: 1}, {x: 2}, {x: 3}].reduce(function (previousValue, currentValue) {return previousValue + currentValue.x
}, initialValue)console.log(sum) // logs 6
// 数组去重
let myArray = ['a', 'b', 'a', 'b', 'c', 'e', 'e', 'c', 'd', 'd', 'd', 'd']
let myArrayWithNoDuplicates = myArray.reduce(function (previousValue, currentValue) {if (previousValue.indexOf(currentValue) === -1) {previousValue.push(currentValue)}return previousValue
}, [])console.log(myArrayWithNoDuplicates) // [a,b,c,d,e]

reduce函数详解相关推荐

  1. 【Python基础】reduce函数详解

    转载请注明出处:[Python基础]reduce函数详解 reduce函数原本在python2中也是个内置函数,不过在python3中被移到functools模块中. reduce函数先从列表(或序列 ...

  2. reduce函数详解以及自己实现一个reduce函数

    开篇语: 一直以来都知道数组有一个reduce方法,可是在工作过程中很少用到,对其用法也不是很清晰,今天抽时间好好整理一下,希望加深记忆,以后在工作过程中做到手到擒来,得心应手. 1.概念 首先看一下 ...

  3. c2064 项不会计算为接受0个参数的函数_【JS必知必会】高阶函数详解与实战

    本文涵盖 前言 高级函数概念 函数作为参数的高阶函数 map filter reduce sort详解与实战 函数作为返回值的高阶函数 isType函数与add求和函数 如何自己创建高阶函数 前言 一 ...

  4. pytorch函数详解

    pytorch函数详解 在typora这里写之后复制到简书上 1. torchvision 1.1 transforms.Compose(transforms) 把几个转换组合 example: fr ...

  5. 【Pytorch】torch.argmax 函数详解

    文章目录 一.一个参数时的 torch.argmax 函数 1. 介绍 2. 实例 二.多个参数时的 torch.argmax 函数 1. 介绍 2. 实例 实例1:二维矩阵 实例2:三维矩阵 实例3 ...

  6. linux 系统函数调用脚本文件,Linux系统调用fsync函数详解

    Linux系统调用fsync函数详解 发布时间:2013-11-14 19:55:10   作者:佚名   我要评论 Linux fsync函数主要用于将同步内存中所有已修改的文件数据到储存设备,多用 ...

  7. python map函数详解

    python map函数详解 python中有些内置的高阶函数,如map(),filter(),reduce():之所以称其为高阶函数,因为这类函数接受的参数中有一个参数为函数对象. map()函数格 ...

  8. C语言网络编程:accept函数详解

    文章目录 前言 函数描述 代码实例 如何得到客户端的IP 和 端口号 前言 当使用tcp服务器使用socket创建通信文件描述符,bind绑定了文件描述符,服务器ip和端口号,listen将服务器端的 ...

  9. 【FFmpeg】函数详解(三)

    FFmpeg函数详解 14.av_write_frame 15.av_interleaved_write_frame 16.av_write_trailer 17.avio_close 18.av_i ...

最新文章

  1. 用友二次开发——工资导入
  2. 对话创新工场陶宁:AI步入深水区下的投资逻辑
  3. 十年后你用什么听音乐?
  4. Drop Down Menu
  5. flutter版本控制工具 `FVM`
  6. SAP Spartacus Focusdirective继承自Lockdirective,静态代码分析
  7. 【全军覆没】麻省理工把中国学生拉入黑名单,斯坦福取消中国大陆面试! 这是怎么了?...
  8. 格科半导体成功引入ASML先进ArF光刻机
  9. 《x86汇编语言:从实模式到保护模式》课后答案
  10. mysql实战数据.sql_Mysql实战(DML增删改+Select)
  11. java 内部类_Java内部类总结有哪些 没有基础该怎么学Java?
  12. IE9 表格错位bug
  13. Python多线程(threading模块)
  14. 基于JSP的图书管理系统
  15. 反射的学习(参考尚硅谷视频)
  16. 计算机视觉-OpenCV(银行卡号识别)
  17. matlab实现zca去白化,白化算法
  18. java effective
  19. 【洛谷P4826】Superbull S【最大生成树】
  20. 移动硬盘坏了数据可以恢复吗 移动硬盘坏了怎么导出数据

热门文章

  1. [gdc13]合金装备的FoxEngine技术
  2. URP使用多相机显示UI 导致IOS 版本15.4 黑屏原因
  3. uniapp云开发uniCloud.uploadFile上传图片文件后缀名丢失
  4. 值得一生收藏的经典台词(轉)
  5. 查看 文件 行数 linux,linux查看文件行号的七种方法
  6. 盘点期货外汇程序化交易课程(持续更新)
  7. Matlab:logical函数(逻辑函数)的使用及注意事项
  8. 开源计算机视觉库OpenCV详解
  9. GRU网络生成莎士比亚小说
  10. 间隙锁(Next-Key锁)