reduce的方法详解
reduce和迭代方法(map、fliter、forEach)一样,会遍历数组;reduce()方法会遍历数组中的每一个元素,每遍历一次就会执行一次回调函数。当遍历完之后会将最后的结果返回出去。
reduce( )方法有两个参数,第一个参数是累加函数,第二个是函数的previousValue的初始值。累加函数有第四个参数分别是:previousValue,nowValue,nowIndex,arr,后两个参数为可选参数。详解见如下代码(温馨提示:直接粘贴复制代码到编译器就可以运行,加深理解。)
<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的方法详解相关推荐
- java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用
java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用
- ES5和ES6数组遍历方法详解
ES5和ES6数组遍历方法详解 在ES5中常用的10种数组遍历方法: 1.原始的for循环语句 2.Array.prototype.forEach数组对象内置方法 3.Array.prototype. ...
- python输入字符串并反序result_python字符串反转的四种方法详解
python字符串反转的四种方法详解 这篇文章主要介绍了python字符串反转的四种详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.用red ...
- 基于python的贝叶斯分类器_Python实现朴素贝叶斯分类器的方法详解
本文实例讲述了Python实现朴素贝叶斯分类器的方法.分享给大家供大家参考,具体如下: 贝叶斯定理 贝叶斯定理是通过对观测值概率分布的主观判断(即先验概率)进行修正的定理,在概率论中具有重要地位. 先 ...
- Laravel学习笔记汇总——Collection方法详解
## Laravel学习笔记汇总--Collection方法详解 本文参考:https:// laravel.com/docs/8.x/collections // 返回整个底层的数组 collect ...
- python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解
如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Th ...
- python修改文件内容_Python批量修改文本文件内容的方法详解
这篇文章主要介绍了Python批量修改文本文件内容的方法的相关资料,需要的朋友可以参考下 Python批量替换文件内容,支持嵌套文件夹 import os path="./" fo ...
- python二维元组_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)
如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...
- Spring JdbcTemplate方法详解
2019独角兽企业重金招聘Python工程师标准>>> Spring JdbcTemplate方法详解 标签: springhsqldbjava存储数据库相关sql 2012-07- ...
最新文章
- Android自定义滑动验证条
- hsf 架构_HSF 服务
- 最小二乘法多元线性回归_回归系列(二)| 最小二乘法真有那么复杂吗?
- INTERSPEECH 2017系列 | 语音识别之语言模型技术
- 怎么样给单选按钮前面插入小图标
- Ubuntu 命令行打开pdf文件和打开命令行当前目录
- python安装redis库
- s3c2416开发板 linux,S3C2416移植内核Linux3.1的wm9713声卡过程
- Google Maps API 以某一经纬度为中心,以某一长度位半径画圆 Draw the radius of a circle...
- 20200221:在排序数组中查找元素的第一个和最后一个位置(leetcode34)
- visual odometry andmultiple view setting
- 《构建之法》读书心得
- matlab nist接口文件,RefProp流体热物理性质计算程序与Matlab接口
- 例外被抛出且未被接住
- opencv实现银行卡号识别
- C语言--逻辑判断题
- 如何关闭“数据执行保护”?
- Lumen 安装配置
- 电信保温杯笔记——《统计学习方法(第二版)——李航》第16章 主成分分析
- win10远程桌面连接ubuntu20(RDP)
热门文章
- cycleGAN网络风格迁移,将黑夜转变成白天,低照度图像复原
- 操作系统面试——虚拟内存
- 美的冰箱微晶X探鲜计划,为你开启X种畅想!
- lego-loam数据_使用lego minifigures数据集在fastai中对datablocks api图像进行分类
- 大数据开发——Hive实战案例
- Linux运维经典问题33则(附赠年薪10W+面试题与答案)
- 财经类学校考研计算机,21考研,财经类性价比超高的院校推荐
- 武汉计算机考研好的学校排名,武汉排名前十的考研学校
- python 股票盯盘v2.0
- LeetCode算法刷题-URL化和重新排列字符串