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

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

  • 房产税的纳税义务人是房屋的产权所有人
  • 办理税务登记需要法人身份证原件吗
  • 流动资金包括哪三种
  • 个人所得税应补税额怎么办
  • 不动产什么时候可以抵扣进项税额
  • 设计服务需要交文化建设费吗
  • 增值税转型前后对比
  • 个税中的年金是什么意思
  • 公户收到的款都要确定收入吗
  • 收到去年所得税汇算清缴退税账务处理
  • 员工社保异地缴纳
  • 完税凭证是什么
  • 出租车发票有出租车信息吗
  • 未取得全额发票怎么处理
  • 保险付款后几天给发票保单
  • 怎么知道一个公众号有多少人关注
  • 事业单位财政拨款是什么意思
  • 进口关税和增值税在哪里交
  • 一寸照片尺寸是几乘几
  • 建筑业增值税会计核算是哪门课的内容
  • 如何解决WIN10系统文件夹只读属性不能更改
  • 重庆四日游最佳攻略超详细
  • 如何修复win11系统
  • 付不出去的应付账款如何写说明书
  • php教程100
  • 培训费收入交什么税
  • 股份支付的确认和计量原则
  • php如何实现伪静态
  • php购物车订单处理
  • 详解 HttpServletResponse
  • 不锈餐具有几种材质
  • 地税没申报罚款多少
  • 残疾人保障金工资总额包括年终奖吗
  • php jsondecode
  • topas命令详解
  • 错账的类型及对应的更正方法
  • 独立核算的分公司责任承担问题
  • 公司没业务可以暂停营业吗
  • 一般纳税人零申报怎么报税步骤
  • 培训费发票开具的要求有?
  • 股份有限公司个人股份
  • 母公司兼并子公司怎么办
  • 生物资产包括哪两类
  • 贷款利息收入要交增值税吗
  • 生产的产品不合格,追究时公司已经注销
  • 什么是委托加工原材料
  • 未使用的固定资产计提折旧应当计入
  • 一般纳税人印花税税率是多少
  • 采购人员垫付怎么入账
  • 合并注销和注销的区别
  • 明细账怎么订起来
  • 固定资产公司
  • 企业未分配利润包括哪些
  • 会计科目中英文对照表下载
  • 学会整理内容
  • SQL入侵恢复xp_cmdshell方法总结
  • windows预体验版本遇到问题
  • freebsd查看硬盘信息
  • win7系统internet怎么打开摄像头
  • window8所有程序在哪
  • linux的用户
  • kprcycleaner.exe是什么
  • win10开始菜单图标消失
  • 车钥匙失灵了10秒教你快速解决
  • 3d动态锁屏壁纸下载
  • nodejss
  • cocos2dx3.0的label字体去描边
  • opengl learn
  • 关于android中view的说法正确的是
  • 简述matlab中控制系统的数学描述类型
  • bootstrap 按钮
  • 叠加计算公式
  • jQuery插件AjaxFileUpload实现ajax文件上传
  • jquery滚动插件
  • 小规模开票限额最新规定2022
  • ca证书密码是什么
  • 物业公司收取的物业费用如何缴税
  • 劳动仲裁受理通知
  • 地税滞纳金如何做账
  • 国税总局17号公告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设