一、定义和用法

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

  • previousValue:上一次调用 callbackFn 时的返回值。在第一次调用时,若指定了初始值 initialValue,其值则为 initialValue,否则为数组索引为 0 的元素 array[0]
  • currentValue:数组中正在处理的元素。在第一次调用时,若指定了初始值 initialValue,其值则为数组索引为 0 的元素 array[0],否则为 array[1]
  • currentIndex:数组中正在处理的元素的索引。若指定了初始值 initialValue,则起始索引号为 0,否则从索引 1 起始。
  • array:用于遍历的数组。

求最大最小值:

let arr1 = [23,123,342,12];

let max = arr1.reduce((pre,cur,index,arr) => {

return pre > cur ? pre : cur

});

console.log(max,"==========")//342

统计一个单词出现的次数:

const arr = ["apple","orange","apple","orange","pear","orange"];

function getWordCnt(){

return arr.reduce(function(pre,cur){

pre[cur] = (pre[cur] + 1) || 1;

return pre;

},{});

}

console.log(getWordCnt());//{apple: 2, orange: 3, pear: 1}

数组去重:

const duplicatedsArr = [1, 5, 6, 5, 7, 1, 6, 8, 9, 7];

const removeDuplicatedArr = duplicatedsArr.reduce((accumulator, currentValue) => {

if(!accumulator.includes(currentValue)){

accumulator.push(currentValue);

}

return accumulator;

}, []);

console.log(removeDuplicatedArr);// [1, 5, 6, 7, 8, 9]

按属性分组对象:

const result = [

{subject: '物理', marks: 41},

{subject: '化学', marks: 59},

{subject: '高等数学', marks: 36},

{subject: '应用数学', marks: 90},

{subject: '英语', marks: 64},

];

let initialValue = {

pass: [],

fail: []

}

const groupedResult = result.reduce((accumulator, current) => {

(current.marks >= 50) ? accumulator.pass.push(current) : accumulator.fail.push(current);

return accumulator;

}, initialValue);

console.log(groupedResult.pass);

//[{ marks: 59, subject: "化学" },{ marks: 90, subject: "应用数学" },{ marks: 64, subject: "英语" }]

数组扁平化:

const twoDArr = [ [1,2], [3,4], [5,6], [7,8] , [9,10] ];

const oneDArr = twoDArr.reduce((accumulator, currentValue) => accumulator.concat(currentValue));

console.log(oneDArr);// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

reduce方法详细使用相关推荐

  1. Stream.reduce()用法详细解析

    在学习这个函数的用法之前,我们要先知道这个函数参数的意义 基本使用 先举一个简单的例子: 算法题:Words 题目描述 每个句子由多个单词组成,句子中的每个单词的长度都可能不一样,我们假设每个单词的长 ...

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

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

  3. db2top详细使用方法_Py之PIL:Python的PIL库的简介、安装、使用方法详细攻略

    Py之PIL:Python的PIL库的简介.安装.使用方法详细攻略 目录 PIL库的简介 PIL库的安装 PIL库的用方法 1.几何图形的绘制与文字的绘制 2.绘制图形的各种案例 PIL库的简介 PI ...

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

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

  5. python本地读csv文件_python读写csv文件方法详细总结

    python提供了大量的库,可以非常方便的进行各种操作,现在把python中实现读写csv文件的方法使用程序的方式呈现出来. 在编写python程序的时候需要csv模块或者pandas模块,其中csv ...

  6. js的parseInt() map(),reduce()方法详解

    parseInt(string,radius)接收两个参数, string(必选)如果接受的是'abc',纯字符串,返回NaN,要是'123'会转化为123,要是'abc123'会转化为123,rad ...

  7. 数组的reduce方法

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

  8. VM:Vmware简介、安装、使用方法详细攻略

    VM:Vmware简介.安装.使用方法详细攻略 目录 VM简介 VM下载 VM安装 许可证激活密钥 VM使用方法 1.在VMware虚拟机里创建第一个Win10系统 2.VM:如何向vmware虚拟机 ...

  9. Python之Pandas:pandas.DataFrame.to_csv函数的简介、具体案例、使用方法详细攻略

    Python之Pandas:pandas.DataFrame.to_csv函数的简介.具体案例.使用方法详细攻略 目录 pandas.DataFrame.to_csv函数的简介 pandas.to_c ...

最新文章

  1. 如何学习iphone游戏开发
  2. python动态图-不就是用Python做个动态图吗?看招
  3. html设计网页技巧,网页设计技巧:网页表格设计技巧总结
  4. ubuntu iptables设置
  5. CentOS系统安装FTP服务器
  6. EdrawMax Crack,多合一的图表应用程序
  7. 【OpenCV】 300行写出全能扫描王
  8. 英语名言警句100句
  9. ubuntu安装独显驱动(R7000P RTX2060)
  10. 谷歌浏览器打开金格在线编辑插件
  11. 1.1 计算机语言发展史以及未来方向
  12. BUUCTF-RSA学习(一)
  13. TinyXML-2解析XML数据
  14. input的type属性值
  15. Linux服务器中Ebury Trojan病毒记
  16. matlab兼职可以做什么的,我开始做兼职了
  17. 解决CustomValidator控件在Wizard控件验证失效果问题
  18. 万能播放器:暴风影音4大使用设置技巧
  19. 利用C 进行AutoCAD的二次开发
  20. 目录 -- Vue.js 3.0 企业级管理后台开发实战 基于Element Plus

热门文章

  1. pxe实现自动化部署安装高效批量网络装机
  2. Java新浪微博客户端开发第六步(完结开源)
  3. 第 1-8 课:基础组件详解(Text、Image、Button)
  4. sql 排名 排行榜
  5. linux下无对应分辨率,关于linux 下显示分辨率问题1440*900?
  6. 心肝脾肺肾的功能_我是亲民_新浪博客
  7. 国内慈善事业的现状及存在的问题
  8. DNS迭代查询,递归查询
  9. 十年来高薪专业变成了它——信息安全
  10. 攻防世界 misc 功夫再高也怕菜刀(全网最完整版)