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

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

  • 怎么清理手机垃圾广告(怎么清理手机垃圾)(怎么清理手机垃圾免费)

    怎么清理手机垃圾广告(怎么清理手机垃圾)(怎么清理手机垃圾免费)

  • iqooz5x有nfc功能吗

    iqooz5x有nfc功能吗

  • b站怎么设置循环播放(b站怎么设置循环播放一个视频)

    b站怎么设置循环播放(b站怎么设置循环播放一个视频)

  • 京东寄件怎么操作(京东怎样寄东西)

    京东寄件怎么操作(京东怎样寄东西)

  • 苹果xs充电到80不动了(苹果xs充电到80苹果10w头可以充手机吗)

    苹果xs充电到80不动了(苹果xs充电到80苹果10w头可以充手机吗)

  • windows操作系统属于应用软件吗

    windows操作系统属于应用软件吗

  • 抖音复制别人的视频怎么去掉抖音号(抖音复制别人的视频怎么去掉水印)

    抖音复制别人的视频怎么去掉抖音号(抖音复制别人的视频怎么去掉水印)

  • 快手d类违规处罚是什么(快手违规b类什么意思)

    快手d类违规处罚是什么(快手违规b类什么意思)

  • 苹果手机qq消息收不到提示(苹果手机qq消息提示音怎么设置)

    苹果手机qq消息收不到提示(苹果手机qq消息提示音怎么设置)

  • qq龙王标识怎么关闭(qq龙王标识怎么显示)

    qq龙王标识怎么关闭(qq龙王标识怎么显示)

  • 快手一块币是什么意思(快手上的一块币是多少钱呢)

    快手一块币是什么意思(快手上的一块币是多少钱呢)

  • qq被删了还能发消息吗(qq被删了还能发图片吗)

    qq被删了还能发消息吗(qq被删了还能发图片吗)

  • 快手如何自动播放下一个视频(快手如何自动播放)

    快手如何自动播放下一个视频(快手如何自动播放)

  • 抖音的文案怎么复制(抖音的文案怎么跑去评论区了)

    抖音的文案怎么复制(抖音的文案怎么跑去评论区了)

  • 手机充电必须充满才能拔吗(手机充电必须充满吗可以半路拔掉吗)

    手机充电必须充满才能拔吗(手机充电必须充满吗可以半路拔掉吗)

  • oppoace充电变慢(opporenoace充电变慢了)

    oppoace充电变慢(opporenoace充电变慢了)

  • qq群可以加多少人(qq群可以加多少人上限)

    qq群可以加多少人(qq群可以加多少人上限)

  • 拍立得照片怎么显影(拍立得照片怎么复制)

    拍立得照片怎么显影(拍立得照片怎么复制)

  • 计算机上的on/c起什么作用(计算机上的oN/CE是什么键)

    计算机上的on/c起什么作用(计算机上的oN/CE是什么键)

  • 电脑怎么开麦克风(电脑怎么开麦克风权限win7)

    电脑怎么开麦克风(电脑怎么开麦克风权限win7)

  • vivo手机地理位置在哪(vivo手机地理位置怎么找)

    vivo手机地理位置在哪(vivo手机地理位置怎么找)

  • 苹果6nfc功能使用方法(iphone6nfc功能在哪里)

    苹果6nfc功能使用方法(iphone6nfc功能在哪里)

  • 水印相机怎么拍视频(水印相机怎么拍不了照片)

    水印相机怎么拍视频(水印相机怎么拍不了照片)

  • 手机可以打电话但是不能上网(手机可以打电话但是网络不能用)

    手机可以打电话但是不能上网(手机可以打电话但是网络不能用)

  • 在Win7系统中,屏幕刷新频率怎么设置?(在win7系统中文件属性有哪些)

    在Win7系统中,屏幕刷新频率怎么设置?(在win7系统中文件属性有哪些)

  • 个人所得税全年一次性奖金优惠政策
  • 无偿使用房产需要交哪些税
  • 加班费计入个税吗
  • 租赁合同管理台账范本
  • 进项税额属于什么账户
  • 什么是离岛免税如何购买有哪些特殊规定
  • 税务筹划的基本前提是
  • 固定资产清理结转到什么科目
  • 上月社保未扣款怎么回事
  • 公司购车需要公章吗
  • 财务要做哪些表
  • 车辆固定资产的入账价值
  • 工程材料票抵扣比例
  • 出口货物保险免税
  • 政府电费补贴文件
  • 资本溢价是
  • 税务机关退水利基金怎么做账?
  • 申请专利的费用如何入账
  • 微信提现手续费最新规定
  • 将自制的一批新产品用于对外投资,生产成本为300000
  • 网上纳税申报怎么填
  • 打印出来的明细账怎么装订
  • 帮对方公司垫付违法吗
  • 一次性发放几个月的工资怎么申报
  • 拍卖中,必须规定一切税费由买受人承担吗?
  • 土地使用税能计入土地转让的土地增值税清算吗
  • 公司收到个人投资款没有备注
  • 收到车险理赔款会计分录
  • 销售净利率怎么分析盈利能力
  • 进项和销项相抵还需要交税吗
  • 收购自然人股东的股权要注意什么
  • 盈余公积的提取基数
  • 收入记借方
  • 微软商店 低价区
  • 公司变更需要哪些资料~问华杰 财务
  • 优化器总结
  • php读取excel数据
  • 预付款项属于什么
  • 股权划转有税费吗
  • 财务费用包括什么利息
  • 阿里云ecs重装
  • rabbitmq中文手册
  • 财务报表季报利润表本月金额怎么填
  • 公司基本户可以异地开户吗
  • 增值税普通发票几个点
  • python中删除字典里的空项目
  • 报税是按照实际收入还是开票
  • 认证已过期请重新登录
  • 个体户定额3万需要申报吗
  • sql server数据库连接端口1434
  • 集团内部借款利率如何确定
  • 资产减值准备是资产的备抵科目吗
  • 律师事务所账务处理例题
  • 银行承兑汇票是什么意思
  • 企业固定资产没有加速折旧还填资产加速折旧表吗
  • 已收款未开票未发货能确认收入吗
  • 给员工缴纳的雇工保险
  • 农业生产成本核算方法
  • 进料加工与来料加工
  • sqlserver比较日期时间
  • mysql的min函数
  • win7桌面计算机
  • 重装系统清空
  • linux修改时间和日期的方法
  • win7怎样设置屏幕保护密码
  • win8系统触摸板按键不能用
  • android.permission.interact_across_users_full
  • 什么是Shell,shell作用
  • python的特点及应用范围
  • unity ti
  • javascript+
  • 安卓中adapter
  • python全角半角
  • python条件怎么算合法
  • python爬虫从入门到精通
  • jquery获取cookie值的方法
  • jquery.form.min.js
  • 云南国税app
  • 怎么注册山东省采购网
  • 江苏税务缴费小程序
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设