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

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

  • 苹果11ios13.6更新方法是什么(苹果11更新13.7)

    苹果11ios13.6更新方法是什么(苹果11更新13.7)

  • apple store是什么

    apple store是什么

  • wps怎么排版页面(wps文档怎么排版页面)

    wps怎么排版页面(wps文档怎么排版页面)

  • se相当于iphone几(苹果se相当于苹果6s吗)

    se相当于iphone几(苹果se相当于苹果6s吗)

  • 抖音极速版如何提现到微信(抖音极速版如何提现到支付宝)

    抖音极速版如何提现到微信(抖音极速版如何提现到支付宝)

  • 苹果手机会不会卡(苹果手机会不会泄露个人信息呢)

    苹果手机会不会卡(苹果手机会不会泄露个人信息呢)

  • 处于s模式的windows10什么意思(处于s模式的windows10家庭版)

    处于s模式的windows10什么意思(处于s模式的windows10家庭版)

  • prj格式用什么打开(prj文件格式)

    prj格式用什么打开(prj文件格式)

  • i12是苹果耳机吗(i12是苹果耳机吗?)

    i12是苹果耳机吗(i12是苹果耳机吗?)

  • 苹果xr触屏不灵怎么办(苹果xr触屏不灵敏是屏幕问题吗)

    苹果xr触屏不灵怎么办(苹果xr触屏不灵敏是屏幕问题吗)

  • camtl00华为是什么型号(camtlooh华为手机什么型号)

    camtl00华为是什么型号(camtlooh华为手机什么型号)

  • ipad2如何隐藏软件(ipad如何隐藏软件)

    ipad2如何隐藏软件(ipad如何隐藏软件)

  • 抖音里我的收藏怎么删(怎样册除抖音里我的收藏)

    抖音里我的收藏怎么删(怎样册除抖音里我的收藏)

  • 手机百度云下载的文件在哪(手机百度云下载慢解决办法)

    手机百度云下载的文件在哪(手机百度云下载慢解决办法)

  • 手机与电脑无线连接方法(手机与电脑无线投屏的方法)

    手机与电脑无线连接方法(手机与电脑无线投屏的方法)

  • 手机qq闪退是什么原因(手机qq闪退怎么办)

    手机qq闪退是什么原因(手机qq闪退怎么办)

  • 魅族16sPro怎么关闭桌面信息(魅族16sos怎么关闭)

    魅族16sPro怎么关闭桌面信息(魅族16sos怎么关闭)

  • 华为畅享9plus双摄怎么用(华为畅享9plus双清模式画面)

    华为畅享9plus双摄怎么用(华为畅享9plus双清模式画面)

  • 手机奥维地图怎么删除标签(手机奥维地图怎么导入文件)

    手机奥维地图怎么删除标签(手机奥维地图怎么导入文件)

  • win10无法在此硬件安装(win10无法在此硬件安装配置)

    win10无法在此硬件安装(win10无法在此硬件安装配置)

  • x换屏幕原彩设置(苹果x换屏幕原彩设置怎么弄回来)

    x换屏幕原彩设置(苹果x换屏幕原彩设置怎么弄回来)

  • 苹果7p打电话对方听不清楚(苹果7p打电话对方听不见什么原因)

    苹果7p打电话对方听不清楚(苹果7p打电话对方听不见什么原因)

  • 花呗如何提额(花呗如何提额到8000)

    花呗如何提额(花呗如何提额到8000)

  • Linux不能上网ping:unknown host出错该怎么办?(linux不能联网怎么解决)

    Linux不能上网ping:unknown host出错该怎么办?(linux不能联网怎么解决)

  • Vue 解决报错 You are using the runtime-only build of Vue where the template compiler is not available.(vue错误提示)

    Vue 解决报错 You are using the runtime-only build of Vue where the template compiler is not available.(vue错误提示)

  • 业务招待费可以进项抵扣吗
  • 增值税专用发票有效期是多长时间
  • 进项税额转出要交企业所得税吗
  • 房产税什么时候落地
  • 买一赠一的税务怎么算
  • 新个税年终奖计算公式
  • 本期缴纳上期应纳税额是自动生成的吗?
  • 养蜂合作社怎么申请补贴
  • 服务性单位从事的是餐饮中介服务
  • 股权投资需要准备哪些材料
  • 哪些支出允许在企业所得税前扣除
  • 会计凭证 借贷
  • 简易计税的销项税怎么处理
  • 递延所得税负债是什么意思
  • 长期股权投资出售比例计算
  • 国税和地税要怎么合并
  • 定额发票有效期是多长时间?你知道吗?
  • 专票开错了可以作废吗
  • 什么叫金税四期呢?
  • 旅游业务开什么发票
  • 进料加工贸易是什么意思
  • 非税收入的发票能抵扣吗
  • 会计调账必须写说明吗
  • 将捐赠收入计入资本公积转增增值税
  • 物流公司搬运货物合法吗
  • 苹果手机zm
  • 大陆公司如何开离岸账户
  • 计提房租记什么科目
  • 7zip怎么压缩文件为rar
  • php提供了________和___________两种复合数据类型
  • 金融企业营业税税率是多少
  • 二阳来临
  • 企业所得税税前扣除和不扣除的区别
  • php验证码功能怎么实现
  • dmsetup remove_all 会不会清掉数据
  • java中同步
  • 缴纳印花税的会计凭证怎么做
  • 间接费用允许调整吗
  • 通用发票如何缴销
  • 普通发票需要做合同才能开吗
  • 公司的个人所得税是什么意思
  • 增值税发票相关罪名
  • 哪些税计入税金及附加
  • 公司买车抵税最新政策2022购置税减半享受不?
  • 费用暂估是什么意思
  • 用留存收益筹资为什么没有占用费
  • 支付货代运费账务处理
  • 收到红字发票账务处理应附哪些资料呢
  • 增值税专票开具与发票专用章保管
  • 支付职工培训费是什么科目
  • 代收水电费如何入账
  • 计提工资的会计账务处理
  • 未分配利润转增股本要交税吗
  • win7 系统设置
  • avgorange是什么文件
  • 3.0vray安装教程
  • 虚拟机centos7无法启动
  • Win7打印机安装
  • win10系统免费升级
  • windows8介绍
  • 校园网升级套餐
  • opengl sharder
  • easyui demo
  • jquery插件使用教程
  • 检测输入条件的各种组合
  • window.open打开窗口设置背景色
  • JavaScript创建数量n由用户决定的数组
  • angularjs和后端交互
  • node.js app
  • android源码分析
  • jQuery轻松实现表格的隔行变色和点击行变色的实例代码
  • python有没有二维数组
  • 省市区json
  • 已申报的纳税申报表怎么下载打印
  • 济南高新区地税局地址
  • 五四新文化运动究竟新在哪里
  • 烟草税多少比例
  • 宪法宣誓仪式流程图
  • 北医三院预约号最晚几点取
  • 佩兰诗胶原蛋白填充霜真的有效果吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设