1. reduce和迭代方法(map、fliter、forEach)一样,会遍历数组;reduce()方法会遍历数组中的每一个元素,每遍历一次就会执行一次回调函数。当遍历完之后会将最后的结果返回出去。

  2. reduce( )方法有两个参数,第一个参数是累加函数,第二个是函数的previousValue的初始值。累加函数有第四个参数分别是:previousValue,nowValue,nowIndex,arr,后两个参数为可选参数。详解见如下代码(温馨提示:直接粘贴复制代码到编译器就可以运行,加深理解。)

  3. <script>const arr=[1,2,3,4,5]const newarr=arr.reduce(function(previousValue,current){ // reduce的特殊之处就在于它方法里面的形参console.log(previousValue+'-----'+current);return previousValue + current // 求和运用});console.log(newarr); //输出 15
    // -----------------------------------------------------------------------------const newarr1=arr.reduce(function(previousValue,current){ // reduce的特殊之处就在于它方法里面的形参console.log(previousValue+'-----'+current);return previousValue + current // 求和运用},2);  // 这里的reduce有两个参数,第一个是函数、第二个是2,这里的2表示的是previousValue初始值为2,如果没有则默认为数组的第一个元素console.log(newarr1); //输出 17
    // -----------------------------------------------------------------------------const newarr2=arr.reduce(function(previousValue,current){ // reduce的特殊之处就在于它方法里面的形参return previousValue * current // // 求积运用});console.log(newarr2); //输出 120
    // -----------------------------------------------------------------------------let arr1 = ['name','age','long','short','long','name','name'] // 计算数组中元素出现的次数let arrResult = arr1.reduce((pre,cur) =>{//    console.log(pre,cur)if(cur in pre){pre[cur]++  // 理解一下为什么不可以使用pre.crr ++的形式,因为pre.crr的.crr默认表示为pre对象中一个的crr属性,且其值不可以更换}else{pre[cur] = 1  // 这里意思是往pre对象中添加了name属性并且赋值为1}return pre},{});console.log(arrResult) //输出{name: 3, age: 1, long: 2, short: 1} 重点理解console.log(arrResult['name']); // 输出 3
    </script>

reduce的方法详解相关推荐

  1. java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用

    java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用

  2. ES5和ES6数组遍历方法详解

    ES5和ES6数组遍历方法详解 在ES5中常用的10种数组遍历方法: 1.原始的for循环语句 2.Array.prototype.forEach数组对象内置方法 3.Array.prototype. ...

  3. python输入字符串并反序result_python字符串反转的四种方法详解

    python字符串反转的四种方法详解 这篇文章主要介绍了python字符串反转的四种详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.用red ...

  4. 基于python的贝叶斯分类器_Python实现朴素贝叶斯分类器的方法详解

    本文实例讲述了Python实现朴素贝叶斯分类器的方法.分享给大家供大家参考,具体如下: 贝叶斯定理 贝叶斯定理是通过对观测值概率分布的主观判断(即先验概率)进行修正的定理,在概率论中具有重要地位. 先 ...

  5. Laravel学习笔记汇总——Collection方法详解

    ## Laravel学习笔记汇总--Collection方法详解 本文参考:https:// laravel.com/docs/8.x/collections // 返回整个底层的数组 collect ...

  6. python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解

    如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Th ...

  7. python修改文件内容_Python批量修改文本文件内容的方法详解

    这篇文章主要介绍了Python批量修改文本文件内容的方法的相关资料,需要的朋友可以参考下 Python批量替换文件内容,支持嵌套文件夹 import os path="./" fo ...

  8. python二维元组_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)

    如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...

  9. Spring JdbcTemplate方法详解

    2019独角兽企业重金招聘Python工程师标准>>> Spring JdbcTemplate方法详解 标签: springhsqldbjava存储数据库相关sql 2012-07- ...

最新文章

  1. Android自定义滑动验证条
  2. hsf 架构_HSF 服务
  3. 最小二乘法多元线性回归_回归系列(二)| 最小二乘法真有那么复杂吗?
  4. INTERSPEECH 2017系列 | 语音识别之语言模型技术
  5. 怎么样给单选按钮前面插入小图标
  6. Ubuntu 命令行打开pdf文件和打开命令行当前目录
  7. python安装redis库
  8. s3c2416开发板 linux,S3C2416移植内核Linux3.1的wm9713声卡过程
  9. Google Maps API 以某一经纬度为中心,以某一长度位半径画圆 Draw the radius of a circle...
  10. 20200221:在排序数组中查找元素的第一个和最后一个位置(leetcode34)
  11. visual odometry andmultiple view setting
  12. 《构建之法》读书心得
  13. matlab nist接口文件,RefProp流体热物理性质计算程序与Matlab接口
  14. 例外被抛出且未被接住
  15. opencv实现银行卡号识别
  16. C语言--逻辑判断题
  17. 如何关闭“数据执行保护”?
  18. Lumen 安装配置
  19. 电信保温杯笔记——《统计学习方法(第二版)——李航》第16章 主成分分析
  20. win10远程桌面连接ubuntu20(RDP)

热门文章

  1. cycleGAN网络风格迁移,将黑夜转变成白天,低照度图像复原
  2. 操作系统面试——虚拟内存
  3. 美的冰箱微晶X探鲜计划,为你开启X种畅想!
  4. lego-loam数据_使用lego minifigures数据集在fastai中对datablocks api图像进行分类
  5. 大数据开发——Hive实战案例
  6. Linux运维经典问题33则(附赠年薪10W+面试题与答案)
  7. 财经类学校考研计算机,21考研,财经类性价比超高的院校推荐
  8. 武汉计算机考研好的学校排名,武汉排名前十的考研学校
  9. python 股票盯盘v2.0
  10. LeetCode算法刷题-URL化和重新排列字符串