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

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

  • 互联网创业成功的秘密,超级软文营销 (互联网创业成功的原因)

    互联网创业成功的秘密,超级软文营销 (互联网创业成功的原因)

  • 荣耀magic3至臻版是双卡双待吗(荣耀magic3至臻版上市价格)

    荣耀magic3至臻版是双卡双待吗(荣耀magic3至臻版上市价格)

  • 用户最大并发数已满(用户最大并发数和带宽有关吗)

    用户最大并发数已满(用户最大并发数和带宽有关吗)

  • 微信小冰为什么不能用了(微信微软小冰在哪里能玩)

    微信小冰为什么不能用了(微信微软小冰在哪里能玩)

  • 小爱同学功能有那些(小爱同学所有功能)

    小爱同学功能有那些(小爱同学所有功能)

  • 迪信通手机号什么意思(迪信通电话号码怎么样)

    迪信通手机号什么意思(迪信通电话号码怎么样)

  • 登录超时是什么意思(登录显示超时什么原因)

    登录超时是什么意思(登录显示超时什么原因)

  • 钉钉连麦可以不露脸吗(钉钉连麦可以不让其他同学听到声音吗)

    钉钉连麦可以不露脸吗(钉钉连麦可以不让其他同学听到声音吗)

  • 苹果手机一直转圈圈(苹果手机一直转圈圈 强制关机都不行)

    苹果手机一直转圈圈(苹果手机一直转圈圈 强制关机都不行)

  • 苹果手机微信支付无法使用怎么解决(苹果手机微信支付管理在哪里)

    苹果手机微信支付无法使用怎么解决(苹果手机微信支付管理在哪里)

  • ipad播放视频没有声音(ipad2020播放视频没有声音)

    ipad播放视频没有声音(ipad2020播放视频没有声音)

  • vivo怎么强制分屏(vivo怎样强行分屏)

    vivo怎么强制分屏(vivo怎样强行分屏)

  • 苹果XR系列和苹果11系列区别(苹果xr与苹果)

    苹果XR系列和苹果11系列区别(苹果xr与苹果)

  • miui优化是干嘛的(miui优化是开启还是关闭)

    miui优化是干嘛的(miui优化是开启还是关闭)

  • oppoa5是什么屏(oppoa5屏幕是什么屏幕)

    oppoa5是什么屏(oppoa5屏幕是什么屏幕)

  • 小米蓝牙耳机有一个没声音是怎么回事(小米蓝牙耳机有定位追踪吗)

    小米蓝牙耳机有一个没声音是怎么回事(小米蓝牙耳机有定位追踪吗)

  • 毒极速发货和普通发货有什么区别(毒app极速发货和普通发货的区别)

    毒极速发货和普通发货有什么区别(毒app极速发货和普通发货的区别)

  • 手机流量怎么给台式电脑用(手机流量怎么给别的手机用)

    手机流量怎么给台式电脑用(手机流量怎么给别的手机用)

  • 确认收货后退款麻烦吗(确认收货后退款评价还有吗)

    确认收货后退款麻烦吗(确认收货后退款评价还有吗)

  • ios13怎么更换壁纸(13怎么换壁纸)

    ios13怎么更换壁纸(13怎么换壁纸)

  • 华为反向充电哪里设置(华为反向充电哪款好)

    华为反向充电哪里设置(华为反向充电哪款好)

  • 如何取消夜间模式了(如何取消夜间模式阅读)

    如何取消夜间模式了(如何取消夜间模式阅读)

  • 爱奇艺怎么开房间(爱奇艺小房间怎么开)

    爱奇艺怎么开房间(爱奇艺小房间怎么开)

  • atwtusb.exe进程是安全的吗 atwtusb进程信息查询(executor进程)

    atwtusb.exe进程是安全的吗 atwtusb进程信息查询(executor进程)

  • 计提本月附加税会计分录
  • 征收率 税率 区别
  • 电子税务局规范
  • 广告宣传费扣除比例
  • 以个人名义汇货要交税吗
  • 库存商品月末必须结转吗
  • 小规模企业所得税税率多少
  • 资产负债表其他应付款计算公式
  • 公益捐赠流程图
  • 境外中资企业转让股权的涉税处理
  • 委托加工白酒消费税计税依据
  • 公司结业清算后多久注销
  • 农民工的工资是当月工作过月几号发工资政府有没有规定
  • 房产税税率2023税率表
  • 税控盘证书密码一天可以输几次
  • 存款利息收入是免税还是不征税
  • 未抵扣的进项税可以留底多久
  • 坏账核销谁来审批
  • 汇率的标价
  • 母子公司之间支付的租赁费可以税前扣除么
  • 取得带息应收票据时,企业应于期末计算票据利息
  • 利润表本月金额怎么算
  • 红字信息表跨越可以撤销吗
  • 鸿蒙系统怎么看运行程序
  • 开启网络共享后怎么使用
  • system idle process是什么进程(CPU的空闲率)
  • Linux系统中Squid代理服务器配置全过程解析
  • php数组可以使用哪些键名
  • 完工产品成本怎么算
  • 公司福利放置零食文案
  • 空调安装还要收费
  • 公司房产税如何征收税率
  • chart.js教程
  • 报销办公用品会计分录计入其他应付还是其他应收
  • nginx配置文件格式
  • 定时任务java
  • 数据库管理系统能对数据库中的数据进行查询
  • 技术和商业模式怎么写
  • 购买农产品取得增值税普通发票可以抵扣吗
  • 差旅费包干是什么意思
  • 法院判决后的利息
  • 公司租用员工的车需要发票吗
  • 发票升位需要什么资料
  • 多付款退回怎样写说明
  • 织梦遍历栏目描述
  • php返回json数据交给js读出来是数字,不是字符串
  • pythonjam怎么用
  • 异地工程增值税按几个点预缴
  • 纳税人识别号和信用代码一样吗
  • 未能确认收入的原因
  • 金税盘税务申报流程
  • 公司承担员工的个税怎么做账
  • 增值税是否计入在建工程
  • 建筑行业的收入做什么科目
  • 招待费进项税额可以抵扣吗
  • 注册工贸公司业务范围
  • 电子发票报销如何处理
  • 公司购买垃圾袋可以抵扣吗
  • 营改增后混凝土税率
  • 单独设置停工损失科目
  • MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 的原因分解决办法
  • select语句中的select*说明
  • mysql远程访问不了
  • win7无法运行
  • windows8怎么用
  • ubuntu配置yum
  • 使用linux常用命令
  • gain_trickler_3202.exe 进程查询 gain_trickler_3202进程是什么文件
  • 怎么看win8还是win10
  • 微软 系统设计
  • unity项目资源
  • nodejs oom
  • wget在windows
  • vs2008安装教程
  • centos ohmyzsh
  • linux多线程编程详解
  • node.js ejs
  • pip install clashroyale
  • 2021税收分类编码大全
  • 准予扣除是什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设