位置: IT常识 - 正文

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

发布时间:2024-01-17
在 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())

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

  • 房地产增值税预缴规定
  • 一个工程中可以有多个主函数
  • 年度企业所得税申报时间
  • 新政府会计制度衔接预算会计需做好的账目清理工作有
  • 不是公司员工可以举报公司不交社保吗
  • 税收优惠退税会计处理
  • 其他应付款属于哪类
  • 中央空调折旧年限是多久
  • 营改增后房地产企业账务处理
  • 企业破产时下列受偿等级最高的是
  • 建筑企业小型企业有哪些
  • 房地产企业成本分摊方法整理(附案例分析)
  • 收到虚开的普票已经入账怎么调账
  • 外购商品赠送客户怎么做账
  • 公司回购房产契税谁交
  • 货运代理公司会计涉及的科目
  • 不应抵扣的进项税抵扣了怎么办
  • 募集资金怎么算
  • 个人借款无法收回确认坏账账务处理
  • 进项税和销项税怎么区分
  • 补计提去年的增值税
  • 预付账款金额过大的原因
  • 承接所有业务
  • 花卉租赁的税率
  • 维修费增值税怎么开
  • 销售货物的运输费用计入成本吗知乎
  • 公司招投标卖标书的收入款财务作什么科目?
  • 已开票怎么做坏账处理
  • 小规模农产品可以抵扣吗
  • 成本核算的基本方法及适用范围
  • 文件夹怎么发送不了
  • 财务费用的冲减什么意思
  • 预计负债账务处理会计分录
  • 酒店开业请吃饭敬酒怎么说
  • PHP:session_save_path()的用法_Session函数
  • safe software
  • php yii框架
  • 公司支付保洁费可以付给个人吗
  • 属于资本的是
  • 委托代销商品两种方式会计分录
  • 前端bs是什么
  • chattr i
  • emacs scheme
  • 购买原材料的运输费计入什么科目
  • 零申报季报怎么报税的具体流程
  • ca证书在线延期不成功
  • dedecms默认用户名
  • 代缴纳房产税
  • 营业执照作废声明
  • 异价调拨什么意思
  • 购入的固定资产,其入账价值包括的内容有
  • 按次缴纳的个人所得税
  • 收到商业汇票计什么科目
  • 现金劳务收入会计分录
  • 成本法和权益法的转换
  • 忘记报关可以补报吗
  • 稳岗补贴如何入账
  • 其他流动资产为什么包括应交增值税
  • 货款已付,货未收到分录
  • 库存商品可以用多栏式吗
  • mac怎么打开mac系统
  • wlms.exe是什么
  • wcu.exe是什么
  • ubuntu20关机卡在logo
  • 快速锁定单元格的方法
  • 为什么电脑显示windows10即将终止服务
  • w10升级失败怎么办
  • linux ed
  • Windows10系统下iis没有注册.netFrameWork4.0的原因
  • 编辑器ui
  • three.js 文档
  • javascript基础教程教材答案
  • three.js入门教程(合集)
  • android退出功能
  • python 脚本编写
  • 十九届三中全会主题
  • 河北华盛税务师事务所
  • 法人实名采集必须去现场吗
  • 东莞房地产协会副会长
  • 达州房管局备案查询系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号