位置: IT常识 - 正文

在 js 中,reduce() 的详解 以及使用方法(js中reduce用法)

编辑:rootadmin
在 js 中,reduce() 的详解 以及使用方法 reduce():

推荐整理分享在 js 中,reduce() 的详解 以及使用方法(js中reduce用法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js中reduce用法,js reduce使用场景,jsreduce用法,js中的reduce,js中reduce用法,js reduce使用场景,js中reduce用法,js中reduce用法,内容如对您有帮助,希望把文章链接给更多的朋友!

reduce()方法为归并类方法,最常用的场景就是,计算数组中的每一项的总和。

reduce() 方法会遍历数组的每一项,他接收两个参数:

第一个参数:每次遍历都会调用的函数,而这个函数有接收四个参数,分别是:前一个值、当前项、项目的索引和数组对象,而这个函数的返回值,回传给下一次遍历时,执行的这个方法的第一个参数。

第二个参数:归并基础的初始值

我们看一下例子: reduce()怎么用?

let arr = [1,2,3,4,5] arr.reduce((prev,cur)=>{ return prev+cur })

上面的这段代码,是用来计算数组总和的,reduce()方法中,只传了第一个参数,也就是只传了一个函数,但第二个参数、初始值没有传,当第二个值没有传的时候,第一次循环,prev的值,默认为数组的第一项,而cur的值为数组的第二项,也就是第一次循环,会return 1+2,这个时候,第一次循环返回的结果回传给下一次循环中方法的第一个参数,也就是说、第二次循环方法中prev的值,是第一次循环方法返回的结果

let arr = [1,2,3,4,5]arr.reduce((prev,cur)=>{ return prev+cur},10)在 js 中,reduce() 的详解 以及使用方法(js中reduce用法)

我们传入一下第二个参数,第一个循环,prev的值为reduce的第二个参数,也就是"归并基础的初始值",而cur的值为数组的第一项,第一项循环会返回10+1

总结:

1.当reduce()方法的第二个值为空时,第一次循环方法中的第一个参数(prev)为数组的第一项值,第二个参数(cur)为数组的第二项值,反之,第一次循环方法中的第一个参数(prev)为reduce的第二个参数值,第二个参数(cur)为数值的第一项值。

2.reduce()方法的第一个参数,就是每次遍历都会执行的匿名函数,当前函数的返回值就会传给下一次执行函数的第一个值。也就是prev

reduce 应用场景:

1.数组里所有值的和

var arr = [0,1,2,3]; var value = arr.reduce((pre, cur) => { return pre + cur; }, 0); console.log(value);// 输出:6

2.累加数组中对象的值

var arr = [{ x: 1 }, { x: 2 }, { x: 3 }]; var value = arr.reduce((pre, cur) => { return pre + cur.x; }, 0); console.log(value);// 输出:6

3.将二维数组转为一维数组

var arr = [ [0, 1], [2, 3], [4, 5], ]; var value = arr.reduce((pre, cur) => { return pre.concat(cur); }, []); console.log(value); // 输出:[0, 1, 2, 3, 4, 5]

4.计算数组中每个元素出现的次数

var arr = ["a", "b", "a", "c", "c", "c"]; var value = arr.reduce((pre, cur) => { if (cur in pre) { pre[cur]++; } else { pre[cur] = 1; } return pre; }, {}); console.log(value); // 输出:{a: 2, b: 1, c: 3}

5.按属性对object分类

var people = [ { name: "tom", age: 17, birthYear: 2021 }, { name: "tony", age: 21, birthYear: 2021 }, { name: "bob", age: 18, birthYear: 2020 }, { name: "bob", age: 18, birthYear: 2021 }, { name: "bob", age: 18, birthYear: 2019 }, ]; function groupBy(arr, property) { if (!Array.isArray(arr)) return []; return arr.reduce((pre, obj) => { var newObj = { [property]: obj[property], data: [obj], }; if (!pre.length) { return [newObj]; } for (let i = 0; i < pre.length; i++) { let item = pre[i]; if (item[property] === obj[property]) { item.data = [...item.data, obj]; return pre; } } return [...pre, newObj]; }, []); } var value = groupBy(people, "birthYear");

返回值:

 6.数组去重:

var arr = [1, 2, 3, 2, 2, 3, 5, null, null, 0, false, false, true]; var value = arr.reduce((pre, cur) => { return pre.includes(cur) ? pre : pre.concat(cur); }, []); console.log(value);//[1, 2, 3, 5, null, 0, false, true]
本文链接地址:https://www.jiuchutong.com/zhishi/298631.html 转载请保留说明!

上一篇:JavaScript -- Map对象及常用方法介绍(js map())

下一篇:权限管理实现的两种方式(详解)(权限管理实现的功能包括)

  • 台电平板电脑维修(台电平板电脑p88)(台电平板电脑维修视频)

    台电平板电脑维修(台电平板电脑p88)(台电平板电脑维修视频)

  • 苹果手机怎么画画(苹果手机怎么画圈标记)

    苹果手机怎么画画(苹果手机怎么画圈标记)

  • qq闪图功能怎么开启(qq闪图功能怎么没有了2023)

    qq闪图功能怎么开启(qq闪图功能怎么没有了2023)

  • 苹果手机下载需要用ID怎么设置(苹果手机下载需要点击右侧怎么回事)

    苹果手机下载需要用ID怎么设置(苹果手机下载需要点击右侧怎么回事)

  • 电脑声音出现回音的解决办法(电脑声音出现回音怎么办)

    电脑声音出现回音的解决办法(电脑声音出现回音怎么办)

  • 怎么申请第二个头条号(怎么申请第二个淘宝账号)

    怎么申请第二个头条号(怎么申请第二个淘宝账号)

  • 腾讯视频微信老是自动登录(腾讯视频微信登录怎么老是掉线)

    腾讯视频微信老是自动登录(腾讯视频微信登录怎么老是掉线)

  • 网口亮橙灯怎么修复(网口灯橙色闪烁特别快)

    网口亮橙灯怎么修复(网口灯橙色闪烁特别快)

  • 苹果11pro充电器是快充吗(苹果11pro充电器是什么接口)

    苹果11pro充电器是快充吗(苹果11pro充电器是什么接口)

  • 华为p30pro语音助手怎么唤醒(华为p30pro语音助手听不到我说话)

    华为p30pro语音助手怎么唤醒(华为p30pro语音助手听不到我说话)

  • 5g流量和4g流量是分开的吗(5g流量和4g流量消耗一样吗)

    5g流量和4g流量是分开的吗(5g流量和4g流量消耗一样吗)

  • 苹果手机安全中心在哪里(苹果手机安全中心图标)

    苹果手机安全中心在哪里(苹果手机安全中心图标)

  • r15标准版和梦境版区别(r15标准版和梦境版外观区别)

    r15标准版和梦境版区别(r15标准版和梦境版外观区别)

  • vivox30和华为mate30的区别

    vivox30和华为mate30的区别

  • 还原所有设置照片还在吗(还原所有设置照片会被删吗vivo)

    还原所有设置照片还在吗(还原所有设置照片会被删吗vivo)

  • word文档怎么让字竖着(word文档怎么让图片并排)

    word文档怎么让字竖着(word文档怎么让图片并排)

  • 如何设置10086流量提醒(怎么设置移动流量)

    如何设置10086流量提醒(怎么设置移动流量)

  • 华为nova5pro怎么局部截屏(华为nova5pro怎么录屏)

    华为nova5pro怎么局部截屏(华为nova5pro怎么录屏)

  • 京东确认收货还能退吗(京东确认收货还能拒收吗)

    京东确认收货还能退吗(京东确认收货还能拒收吗)

  • 怎么在快手上开店(怎么在快手上开通小黄车卖货)

    怎么在快手上开店(怎么在快手上开通小黄车卖货)

  • 为什么网易云下载的不是mp3格式(为什么网易云下载的歌是ncm格式)

    为什么网易云下载的不是mp3格式(为什么网易云下载的歌是ncm格式)

  • ios怎么玩安卓游戏(ios怎么玩安卓的游戏)

    ios怎么玩安卓游戏(ios怎么玩安卓的游戏)

  • 通过微信收款码能找到人吗(通过微信收款码可以查找到个人信息吗)

    通过微信收款码能找到人吗(通过微信收款码可以查找到个人信息吗)

  • 爱奇艺HD版怎么关掉热点(爱奇艺hd版怎么全屏)

    爱奇艺HD版怎么关掉热点(爱奇艺hd版怎么全屏)

  • win7右下角网络感叹号(win7右下角网络图标透明)

    win7右下角网络感叹号(win7右下角网络图标透明)

  • 图片上的字怎么去掉(图片上的字怎么去掉不伤背景)

    图片上的字怎么去掉(图片上的字怎么去掉不伤背景)

  • Win11电脑下载的文件被自动删除怎么办(win11电脑下载的软件桌面没有图标怎么办)

    Win11电脑下载的文件被自动删除怎么办(win11电脑下载的软件桌面没有图标怎么办)

  • 增值税发票服务名称可以更改吗
  • 收到的税费返还应在支付的税费项目中扣除判断题
  • 小规模纳税人普票收入会计分录
  • 房产税从价计征的计税依据
  • 小企业周转材料报废残值回收应计入管理费用
  • 仓储费和仓储服务费的区别
  • 进项税留底是什么意思
  • 员工借款怎么入账
  • 长期合同收入与应收帐款如何处理?
  • 公司注销税务需要交多少钱
  • 100万的收入要交多少
  • 个税申报与社保申报一定是一致的么
  • 财税2010121号文件解读
  • 合伙人投入的资金怎么记账
  • 公司绿化购买的苗木如何进行账务处理?
  • 一般纳税人增票流程
  • 软件企业即征即退例题
  • 小型纳税人个人所得税
  • 装修工程需要预缴吗
  • 参加抽奖活动中奖却不发奖品
  • 进料加工可分为
  • linux怎么使用命令
  • 平均应收账款是什么
  • 跨年怎么冲销发票
  • 普通发票可以部份红冲吗?
  • mac如何连接2个airpods
  • 厂区绿化工程计入什么科目
  • linux shell 比较运算符
  • php字符串操作函数
  • 工程施工暂估的成本的依据
  • 无法访问或访问被拒绝是怎么解决
  • 用应付票据付应付账款
  • 会计差错及账项调整
  • php中strstr
  • thinkphp框架结构
  • 教育行业财务处理流程
  • html在线小游戏
  • php对象是什么类型的数据
  • 小规模纳税人研发费用加计扣除优惠政策
  • 上个月发票税率怎么查
  • 开源php 系统
  • python解释器的多种使用
  • 二手房过户需要户口本吗
  • 残保金是什么单位收的
  • 应付货款和应付款的区别
  • 小规模公司都交哪些税
  • 小微企业直接考察模式
  • 应付利息什么时候确认收入
  • sql里面union 和union all区别
  • sql server 2008的安全机制
  • 发票金额大于付款金额怎么写说明
  • 主营业务成本和营业成本的区别
  • 印花税该是如何征收的
  • 进项税额大于销项税额期末留抵
  • 固定资产报废的账务处理
  • 员工替公司垫付工资违法吗
  • 投资收益期末余额在借方还是贷方
  • 在途物资入库怎么记账
  • 固定资产怎么记入账本明细科目
  • jdbc取数据
  • win7更改win10系统要怎么更改
  • windows8 enterprise
  • centos 编译安装
  • win10超级按钮
  • win7系统账户名怎么看
  • 升级win10系统卡住不动了
  • android开机自启动显示界面
  • 网页字体大小调整方案
  • cocos-2dx
  • shell的逻辑运算符
  • android应用结构包括哪些
  • javascript主要学什么
  • python列表组成字符串
  • jquery内容过滤选择器有哪些
  • 2021一带一路会议时间?
  • 广东税务局账号登录
  • 安徽增值税普通发票税率1%
  • 国税地税征管体制改革方案
  • 湖北省国家税务局历任局长
  • 每个省几个市
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设