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

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

  • ipad有录屏功能吗(ipad录屏功能怎么录声音)

    ipad有录屏功能吗(ipad录屏功能怎么录声音)

  • 哈啰单车怎么预约(哈啰单车怎么预约不了只能响铃寻车)

    哈啰单车怎么预约(哈啰单车怎么预约不了只能响铃寻车)

  • 小米返回键怎么调出来(小米返回键怎么关闭)

    小米返回键怎么调出来(小米返回键怎么关闭)

  • 电话显示意思小君智能是什么(电话显示×怎么回事)

    电话显示意思小君智能是什么(电话显示×怎么回事)

  • 微信免提打不开(微信免提打不开是什么原因)

    微信免提打不开(微信免提打不开是什么原因)

  • 微信拉黑后什么样子(微信拉黑后什么效果)

    微信拉黑后什么样子(微信拉黑后什么效果)

  • 拼多多微信支付不了是怎么回事(拼多多微信支付为什么直接扣银行卡的钱)

    拼多多微信支付不了是怎么回事(拼多多微信支付为什么直接扣银行卡的钱)

  • 华为手机配件都是自己生产的吗(华为手机配件都是哪国的)

    华为手机配件都是自己生产的吗(华为手机配件都是哪国的)

  • 打印机定影器坏了什么症状(打印机定影器坏了会卡纸吗)

    打印机定影器坏了什么症状(打印机定影器坏了会卡纸吗)

  • oneplusa6000是什么型号(oneplusa6000多少钱)

    oneplusa6000是什么型号(oneplusa6000多少钱)

  • 一个手机怎样登录三个微信号(一个手机怎样登录两个钉钉号)

    一个手机怎样登录三个微信号(一个手机怎样登录两个钉钉号)

  • qq公众号在哪里关注(qq公众号在哪里添加2022)

    qq公众号在哪里关注(qq公众号在哪里添加2022)

  • rx570要多大电源(rx570一般几p供电)

    rx570要多大电源(rx570一般几p供电)

  • 摄像头一天用多少流量(摄像头一天用多少内存怎么算)

    摄像头一天用多少流量(摄像头一天用多少内存怎么算)

  • 如何打开vivo快应用(vivo怎么打开快应用)

    如何打开vivo快应用(vivo怎么打开快应用)

  • 在计算机内多媒体数据最终是以什么形式存在的(在计算机内多媒体数据)

    在计算机内多媒体数据最终是以什么形式存在的(在计算机内多媒体数据)

  • ipadwifi密码错误(ipadwifi密码一直错误)

    ipadwifi密码错误(ipadwifi密码一直错误)

  • iphone4s无服务怎么办(iphone4无服务怎么恢复)

    iphone4s无服务怎么办(iphone4无服务怎么恢复)

  • ipv4十进制取值范围(ipv4是几进制)

    ipv4十进制取值范围(ipv4是几进制)

  • 苹果手机怎么拍照好看又上镜(苹果手机怎么拍live动图)

    苹果手机怎么拍照好看又上镜(苹果手机怎么拍live动图)

  • wps里的段落在哪里找(wps里的段落在哪里找出来)

    wps里的段落在哪里找(wps里的段落在哪里找出来)

  • 怎么清空收款小账本(怎么清空收款小账本华为)

    怎么清空收款小账本(怎么清空收款小账本华为)

  • 手机上淘小二怎么联系(淘小二怎么挣钱)

    手机上淘小二怎么联系(淘小二怎么挣钱)

  • 华为手机云服务怎么使用(华为手机云服务平台登录入口)

    华为手机云服务怎么使用(华为手机云服务平台登录入口)

  • 流动资产周转天数下降说明什么
  • 用友会计报表
  • 总资产报酬率的计算公式
  • 公司为员工报销的医药费
  • 残保金滞纳金能超过本金吗
  • 用excel怎么制作思维导图
  • 补交以前年度房产税和滞纳金需要更改以前年度报表吗
  • 固定资产账实不符的审计定性
  • 增值税返还需要交增值税吗
  • 企业递延所得税费用的计算公式
  • 出口货物预收账款会计分录
  • 居民企业只就其境内全部所得纳税
  • 企业注销合适还是转让出去合适
  • 抵扣上月留抵税额的分录
  • 股票买卖属于投资活动吗
  • 租赁房产不开租房发票
  • 增值税税负低如何解释
  • 企业合同约定调岗不接受辞退没赔偿成立吗
  • 房地产企业开发资质查询
  • 利润表的本期数即本月实际发生数
  • 出售报废电脑要交什么税
  • 调整以前年度应付
  • 个人出租房屋给公司可以开专票吗
  • 政策性搬迁的会计实用报告
  • 选育新品种植物应如何缴纳增值税?
  • 企业所得税中的资产总额怎么填
  • 苹果屏幕刷新率120hz的机型
  • 移动操作系统有哪些主要特点和功能
  • 交接目录excel
  • php中implode
  • 主营业务毛利率公式
  • web网页制作软件
  • 个人独资企业所得税弥补亏损
  • mysql查询性能优化
  • 固定资产折旧费计入成本吗
  • 疫情期间增值税减免政策截止时间
  • 以前年度损益调整在利润表中怎么填
  • 不动产进项税额抵扣从什么时候开始
  • 营改增政策汇总
  • 凭证摘要写错了已结账了怎么办
  • 物流公司贷款
  • 扣缴个人所得税申报表模板
  • 商家代金券谁出钱
  • 员工房屋租赁合同
  • 外币资本金入账汇率怎样选择
  • 跨年红冲收入记在本年度
  • 美国支票名字不一致
  • 怎么去掉0前面的逗号
  • Windows Server 2008如何设置自动获取ip?设置自动获取ip教程
  • win10屏幕显示
  • xp系统网络服务在哪开启
  • xpkw
  • ubuntu14打开终端
  • 一岁的宝宝可以喝枸杞水吗
  • xp系统开机出现英文怎么办
  • 红石使用基础教学
  • 苹果Mac系统怎么用光盘安装
  • uefi bios ufilify
  • win7系统进不了桌面
  • win8如何免费升级win10
  • mac 安卓系统
  • cocos如何实现跨平台
  • jquery延时器
  • jq转盘抽奖
  • nodejs获取ip
  • img可以设置的属性
  • vue中组件的作用是什么
  • ajax简单实例
  • 在线视频爬取工具
  • jquery遍历div
  • js获取当前点击事件的节点
  • 要使物体从静止状态转变为运动状态需要对这个物体什么
  • jquery兼容ie
  • HTTP状态代码以及定义(解释)
  • 利用html css javascript做一个网页
  • python数据通信
  • jquery删除对象
  • 申报期包括不包括最后一天
  • 增值税电子普通发票和普通发票区别
  • 欠税多少构成犯罪
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设