位置: 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())

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

  • 微信视频有回音是什么原因(微信视频有回音如何消除)

    微信视频有回音是什么原因(微信视频有回音如何消除)

  • 腾讯视频可以用手机号登录吗(腾讯视频可以用手机号登录会员吗)

    腾讯视频可以用手机号登录吗(腾讯视频可以用手机号登录会员吗)

  • 电脑fn键在哪里(电脑键盘哪个是刷新键)

    电脑fn键在哪里(电脑键盘哪个是刷新键)

  • 苹果微信好友突然全没了(苹果微信好友突然消失了)

    苹果微信好友突然全没了(苹果微信好友突然消失了)

  • 通过抖音号可以查到电话号码吗(通过抖音号可以查到微信号吗)

    通过抖音号可以查到电话号码吗(通过抖音号可以查到微信号吗)

  • filerecv是什么文件夹(.file_recycle是什么文件)

    filerecv是什么文件夹(.file_recycle是什么文件)

  • 淘宝图片发不出去是怎么回事(淘宝图片发不出去,只支持3M)

    淘宝图片发不出去是怎么回事(淘宝图片发不出去,只支持3M)

  • 微信骰子怎么不动了(微信骰子bug)

    微信骰子怎么不动了(微信骰子bug)

  • 微信小程序支付多久到账(微信小程序支付失败是什么原因)

    微信小程序支付多久到账(微信小程序支付失败是什么原因)

  • 淘宝补差价是什么意思(淘宝补差价补多少)

    淘宝补差价是什么意思(淘宝补差价补多少)

  • 平板电脑第一次充电需要多长时间(平板电脑第一次充电没充满时能拔下来用吗)

    平板电脑第一次充电需要多长时间(平板电脑第一次充电没充满时能拔下来用吗)

  • 电脑如何剪切音乐(电脑上怎样剪切音乐)

    电脑如何剪切音乐(电脑上怎样剪切音乐)

  • 京东交易受限怎么解除(京东交易受限怎么处理)

    京东交易受限怎么解除(京东交易受限怎么处理)

  • twsp10耳机怎么连接双耳(tws1耳机配对)

    twsp10耳机怎么连接双耳(tws1耳机配对)

  • 怎么删除表格里的文字(怎么删除表格里的空白行)

    怎么删除表格里的文字(怎么删除表格里的空白行)

  • 照片可以用黑框吗(照片可以用黑框打印吗)

    照片可以用黑框吗(照片可以用黑框打印吗)

  • ipad怎么让屏幕常亮(ipad怎么让屏幕触摸没反应)

    ipad怎么让屏幕常亮(ipad怎么让屏幕触摸没反应)

  • 苹果手机的诊断与用量在哪(苹果手机的诊断日志电池)

    苹果手机的诊断与用量在哪(苹果手机的诊断日志电池)

  • 快手8484作品怎么拍(快手视频作品)

    快手8484作品怎么拍(快手视频作品)

  • 苹果用按钮调整啥意思(苹果用按钮调整好用吗)

    苹果用按钮调整啥意思(苹果用按钮调整好用吗)

  • 红米note7前置摄像头多少像素(红米note7前置摄像头故障)

    红米note7前置摄像头多少像素(红米note7前置摄像头故障)

  • 酷我如何开直播(酷我音乐直播可以投屏吗)

    酷我如何开直播(酷我音乐直播可以投屏吗)

  • ipadpro11和10.5区别(ipad pro10.5和pro11)

    ipadpro11和10.5区别(ipad pro10.5和pro11)

  • 详解Linux中hdparm命令查看硬盘信息的用法(linux hdparm)

    详解Linux中hdparm命令查看硬盘信息的用法(linux hdparm)

  • MAC下如何一键点出长文件名无需过多步骤(macbook air怎么点击)

    MAC下如何一键点出长文件名无需过多步骤(macbook air怎么点击)

  • 白酒的品牌使用费含增值税吗
  • 电子税务局规范
  • 金蝶eas怎么用
  • 未开票收入如何红冲
  • 维修费开具发票
  • 企业构建固定资产支付的现金应列示在现金流量表
  • 领用本企业生产的水泥用于在建工程
  • 房屋租赁收入还需要缴纳附加税吗
  • 小规模纳税人减征额怎么计算
  • 企业注销未抵扣完的进项税
  • 劳务报酬所得是什么
  • 购买日子公司账面价值调整为公允价值
  • 收到差额纳税的发票进项税能抵扣吗
  • 企业预缴所得税
  • 管理费用避税
  • 营改增后如何确认老项目营改增前收入
  • 车辆处置入账价值包括哪些
  • 购买方红字信息表开具流程图
  • 外购存货成本包括哪些
  • 金融机构可以采取什么措施
  • 土地增值税加计5%扣除年限
  • 无形资产摊销完还需要报废
  • 暂估冲回账务处理
  • 药店销售小票要保存多久
  • 无形资产一般采用直线法摊销也可采用加速法进行摊销
  • 债权人和债务人是什么意思
  • win10专业版19042.630
  • 更新出现网络异常
  • KbdTray.exe - KbdTray是什么进程 有什么作用
  • 表单的基本语法格式
  • 处置工程物资取得净收益
  • 会计政策变更追溯调整为什么不影响所得税
  • 小规模附加税费
  • ros算法
  • php _dir_
  • 开发成本属于什么类型科目
  • 应付职工薪酬如何确认
  • 一台设备可以分开开票吗
  • 养殖场租赁发票图片
  • 实收资本资本公积印花税怎么申报
  • 建筑企业增值税收入确认时间
  • 企业没有研发费用怎么做账
  • 速动资产扣除应纳税所得
  • 补充医疗相关政策
  • 计提坏账准备如何做会计分录
  • 应收账款属于会计分录
  • 出口退税 账务处理
  • 借款后的报销流程怎么写
  • 打印的机票行程单怎么看
  • 银行证书费入什么科目
  • 如何判断会计政策变更
  • 年底奖金怎么入账
  • 会计账薄按其外形特征不同可以分为
  • mysql的增删改查命令
  • 如何在sql server表中添加数据表格为什么没有显示
  • 微软补丁星期二更新吗
  • centosip配置
  • solaris 11.4
  • 富士通FUJITSU笔记本电脑开机进入BIOS的方法(F2)
  • bd是什么文件
  • win8如何安装
  • win8的控制面板在哪里打开
  • cocos编程
  • django orm left join
  • Cocos2dx3.2 Crazy Tetris 基本设置及主菜单页面(菜单、按钮)
  • android textview设置字体
  • 微信小程序实现文件上传
  • python如何用
  • js判断上传图片宽高大小
  • 基于javascript的毕业设计选题
  • 探探左划还是右划
  • 山东潍坊昌邑房产网
  • 苏宁易购的联系电话
  • 东莞市国税局南城莫
  • 拆迁户契税减免政策文件
  • 青海省地方税务局领导名单
  • 淘宝店铺过户后身份证是谁的
  • 小规模纳税人销售货物税率是多少
  • 销售税金含增值税怎么计算企业所得税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设