js利用reduce方法让你的代码更加优雅

一直以来都在函数式编程的大门之外徘徊,要入门的话首先得熟悉各种高阶函数,数组的reduce方法就是其中之一,这篇文章主要给大家介绍了关于js利用reduce方法让你的代码更加优雅的相关资料,需要的朋友可以参考下

js利用reduce方法让你的代码更加优雅,久久派带你了解更多相关信息。

前言

在实际项目中,最常见可能是在计算、循环逻辑方面的处理,可以使用数组中reduce方法也可以解决很多的问题,使得你的代码风格更加优雅!

reduce语法

arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])

参数说明

reducer函数需要接收4个参数分别是

callback

  • Accumulator
    • 累计器累计回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue。
  • Current Value
    • 数组中正在处理的元素。
  • Current Index
    • 这是一个可选参数,数组中正在处理的当前元素的索引。 如果提供了initialValue,则起始索引号为0,否则从索引1起始。
  • Source Array
    • 这是一个可选参数,调用reduce()的数组

initialValue

  • 作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。

返回值

  • 函数累计处理的结果

一些reduce常用方法

数组里所有元素的和

const arr = [1, 2, 3, 4];const result = arr.reduce((acc, cur) => acc + cur)​console.log(result) // 10

计算数组中每个元素出现的次数

const nums = [\'1\', \'1\', \'1\', \'2\', \'3\'];const countednums = nums.reduce((acc, cur) => {  if (cur in acc) {  acc[cur]++;  } else {  acc[cur] = 1;  } return acc;}, {});​console.log(countednums); // {1: 3, 2: 1, 3: 1}

扁平化数组

const arr = [[\'a\', \'b\'], [\'b\', \'c\'], [\'d\', \'e\']]const flatten = arr => { return arr.reduce((acc, cur) => {  return acc.concat(cur)  }, [])}​console.log(flatten(arr)); // [\"a\", \"b\", \"b\", \"c\", \"d\", \"e\"]

数组去重

const arr = [22,341,124,54,4,21,4,4,1,4,4];const result = arr.sort().reduce((acc, cur) => {  if(acc.length === 0 || acc[acc.length-1] !== cur) {    acc.push(cur);   }  return acc;}, []);​console.log(result); // [1, 124, 21, 22, 341, 4, 54]

求数组中最大值

const arr = [1, 2, 3, 5, 1]let result = arr.reduce((acc, cur) => Math.max(acc, cur))​console.log(result)

按照顺序调用promise

这种方式实际上处理的是promise的value,将上一个promise的value作为下一个promise的value进行处理。

const prom1 = a => {  return new Promise((resolve => {    resolve(a)  }))}const prom2 = a => {  return new Promise((resolve => {    resolve(a * 2)  }))}const prom3 = a => {  return new Promise((resolve => {    resolve(a * 3)  }))}const arr = [prom1, prom2, prom3]const result = arr.reduce((all, current) => {  return all.then(current)}, Promise.resolve(10))result.then(res => {  console.log(res);})

最后

本文分享了一些在日常开发中比较常用的一些reduce处理方法,你可以直接拿到你的项目中使用,也可以进行二次封装。

到此这篇关于js利用reduce方法让你的代码更加优雅的文章就介绍到这了,更多相关js reduce方法让代码优雅内容请搜索趣讯吧以前的文章或继续浏览下面的相关文章希望大家以后多多支持趣讯吧!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/18618.html

(0)
nan
上一篇 2021-08-29
下一篇 2021-08-29

相关推荐

  • 中餐就餐礼仪有哪些要求(在餐桌上你知道座位有什么讲究吗)

    你是不是在宴请或者赴宴中遇到过:不知道怎样安排客人落座?不知道自己该座哪里?等等烦恼。今天这篇文章带你解读一下中餐餐桌上的座位文化,让宴请赴宴摆脱落座尴尬。首先我们来看一下图:我再带你了解一下图上座位上的名词:1、主陪位:通常是席主或者威望高有一定

    2021-12-31
    0
  • 天玑2000核心参数详解(对标骁龙898功耗领先)

    摘要:天玑2000的核心参数,将会采用台积电的4nm工艺,CPU部分由1X3.0GHz的Cortex-X2超大核+3XA710大核+4XA510小核构成,GPU部分则是使用Mali-G710MC10。从纸面参数来看,这颗芯片绝对是旗舰级别。

    2023-04-06
    0
  • 59岁女子产女破当地高龄产妇纪录 !3年前大女儿意外去世 !

    近日,浙江宁波。黄女士3年前大女儿意外去世,59岁的她与丈夫历经坎坷怀上孩子,医生担心她记不住医嘱,就把注意事项编写成微信发给黄女士,并耐心告知如何饮食、活动和监测血糖。经过全面检查,系统评估后,医生为孕37+3周的黄女士进行剖宫产术,顺利取出一3.05千克的女婴,母女平安。术后7天,恢复良好的黄女

    热点头条 2023-05-24
    0
  • 腾讯与钟南山团队利用大数据与AI,联合发布最新疫情研究成果

    久久派12月21日消息,据鹅厂黑板报公众号,日前,钟南山院士团队与腾讯披露了一项利用大数据与人工智能技术,定量评估不同公共防控政策对新冠疫情控制效果的研究。据介绍,研究团队开发了一种新的反事实推理模型框架,通过引入隐含交互因子项,最大程度排除了随时间

    2022-01-14
    0
  • 范佩西什么水平(范佩西什么时候退役)

    范佩西什么水平,范佩西什么时候退役。久久派带你了解更多相关信息。说起范佩西应该很多人都对其很了解,足球界的领军人物,特别是热爱看球赛的人对其更加有一定的了解。范佩西是世界上的顶尖球星,一般都是只有四五个,而范佩西就是其中之一。范佩西的跑位

    2022-01-18
    0
  • 王者荣耀简短好听名字(好听不失沙雕的昵称)

    一、沙雕姐妹、基友昵称:别叫佩奇,好的乔治混分小天才,被带小能手马克菠萝包,蔡文姬腿堡圆通快递人头,中通速递人头扒拉拉小魔芋,拉粑粑小魔仙菜是菜逼的菜,凉是凉凉的凉精英中的坑货,坑货中的精英峡谷干饭王,泉水打工人哥哥我好怕,姐姐我也怕我要抢人头,别抢

    2021-12-31
    0

发表回复

登录后才能评论