问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JavaScript之reduce()的用法

发布网友 发布时间:2024-09-17 05:52

我来回答

1个回答

热心网友 时间:2024-10-16 08:29

首先,参考了这位大佬的总结,敲了一遍,收获很大。记录下来。参考链接

背景:

之前是接触vue源码的时候,发现使用rece的地方很多。当时也是在看别人分享,简单带过,发现很好用。简单研究后,很少用到。导致理解不深。今天碰到到使用场景,特意花时间研究了一番,可以说理解的很到位了。

语法arr.rece(function(prev,cur,index,arr){...},init);

其中,\arr表示原数组;\prev表示上一次调用回调时的返回值,或者初始值init;\cur表示当前正在处理的数组元素;\index表示当前正在处理的数组元素的索引,若提供init值,则索引为0,否则索引为1;\init表示初始值。【这个初始值在很多技巧上要用到,要重点留意】

在实际使用当中,其实常用的参数只有两个:prev和cur。结合例子来分析一番。

实例

以下举的例子除了用rece来实现,还有很多其他的方法。不过使用rece有它独有的技巧性和方便。

1、求数组的和

方式一:

letarr=[3,4,5,6,9,2,4,6];letsum=arr.rece((pre,cur,index,arr)=>{//console.log('index:',index);//console.log('arr:',arr);returnpre+cur;})console.log(sum);

方式二:

letsum=arr.rece((pre,cur,index,arr)=>{//console.log('index:',index);//console.log('arr:',arr);returnpre+cur;},0)console.log(sum);

注意:方式二,由于传入了初始值0,所以pre的初始值就是0,cur的值,就是数组的第一个值为3;如果不传初始值的话,就如方式一,这时,pre的值是3,cur的值是4;相加后为7,作为下一轮的pre的值,cur是5,依次类推下去。

2、求数组的最大值

方式一:

letarr=[1,4,5,6,9,2,4,6];letmax=arr.rece((pre,cur)=>{returnMath.max(pre,cur)})console.log(max);

方式二:

letmax2=arr.rece((pre,cur)=>{returnpre>cur?pre:cur;})console.log('max2:',max2);3、给数组去重letnewArr=arr.rece((pre,cur)=>{pre.indexOf(cur)===-1&&pre.push(cur)returnpre},[])console.log(newArr);进阶用法1.求字符串中字幕出现的次数conststr='sfhjasfjgfasjuwqrqadqeiqsajsdaiwqdaklldflas-cmxzmnha';constres=str.split('').rece((pre,cur)=>{pre[cur]?pre[cur]++:pre[cur]=1;returnpre},{})console.log('汇总次数:',res);2.数组转数组letarr1=[2,3,4,5,6,7];letnewArr1=arr1.rece((pre,cur)=>{pre.push(cur*cur)returnpre;},[])console.log('数组转数组:',newArr1);3.数组转对象letstreams=[{name:'博士',id:1},{name:'硕士',id:2},{name:'本科',id:3}];letobj1=streams.rece((pre,cur)=>{pre[cur.id]=cur;returnpre;},{})console.log('数组转对象:',obj1);高级用法1.*的叠加执行操作

例子:各科成绩占比不一样,求结果

constresult=[{subject:'math',score:99},{subject:'chinese',score:95},{subject:'english',score:80},];constdis={math:0.5,chinese:0.2,english:0.4};letres2=result.rece((pre,cur)=>{returndis[cur.subject]*cur.score+pre},0)console.log('*叠加:',res2);

加大难度:商品对应不同国家汇率不同,求价格

letarr=[3,4,5,6,9,2,4,6];letsum=arr.rece((pre,cur,index,arr)=>{//console.log('index:',index);//console.log('arr:',arr);returnpre+cur;})console.log(sum);02、扁平一个二维数组letarr=[3,4,5,6,9,2,4,6];letsum=arr.rece((pre,cur,index,arr)=>{//console.log('index:',index);//console.log('arr:',arr);returnpre+cur;})console.log(sum);1

*数组扁平化

3、对象数组去重letarr=[3,4,5,6,9,2,4,6];letsum=arr.rece((pre,cur,index,arr)=>{//console.log('index:',index);//console.log('arr:',arr);returnpre+cur;})console.log(sum);24、compose函数

rexcompose源码实现

letarr=[3,4,5,6,9,2,4,6];letsum=arr.rece((pre,cur,index,arr)=>{//console.log('index:',index);//console.log('arr:',arr);returnpre+cur;})console.log(sum);3
JavaScript之reduce()的用法

pre:cur;})console.log('max2:',max2);3、给数组去重letnewArr=arr.reduce((pre,cur)=>{pre.indexOf(cur)===-1&&pre.push(cur)returnpre},[])console.log(newArr);进阶用法1.求字符串中字幕出现的次数conststr='sfhjasfjgfasjuwqrqadqeiqsajsdaiwqdaklldflas-cmxzmnha';constres=str....

JS数组reduce()方法详解及用法总结

在JavaScript中,数组的reduce方法用于对数组中的所有元素执行累积运算。这个方法接收一个回调函数作为参数,该回调函数会为数组中的每个元素执行操作,并将结果返回以累积一个最终结果。首先,让我们了解一下reduce的基本语法。reduce方法的参数通常包括一个回调函数和可选的初始值。在没有提供初始值的情况下...

一文搞懂reduce的用法和使用场景!

语法方面,reduce 方法接收两个参数:回调函数和初始值。回调函数用于处理数组元素,初始值则用于第一次执行回调函数时作为参数传递。在使用 reduce 时,有几个关键点需要注意:初始值对回调函数的执行结果有很大影响,返回值是遍历所有数组执行回调函数后的结果。当有初始值时,回调函数第一次执行时的 prev...

reduce的用法

Reduce的用法通常与编程相关,主要用于减少数组或集合中的元素数量,或者对元素进行某种计算并返回单一结果。在JavaScript等语言中,reduce方法常用于数组处理,可以大大简化对数组的操作。详细解释:1. 基本用法:reduce方法通常用于遍历数组,并对其进行某种计算或组合操作。例如,可以计算数组的总和、平均值或其...

web项目怎么用js程序的reduce方法实现数组求和?

实现Web项目中数组求和功能,JavaScript的reduce方法是一个高效选择。首先,定义数组,包含需要求和的数字。接着,调用数组对象的reduce方法,将一个回调函数作为参数传递。该回调函数接收两个参数:累加器和当前值。在回调函数内部,将当前值添加至累加器,最后返回累加器的值。如果不传入reduce方法的第二个...

Javascript中内建函数reduce的应用详解

reduce方法最常见的场景就是叠加。var items = [10,120,1000];// our reducer function var reducer = function add(sumSoFar,item){ return sumSoFar + item;};// do the job var total = items.reduce(reducer,0);console.log(total);// 1130 可以看出,reduce函数根据初始值0,不断的进行...

reduce是什么意思啊?

reduce是JavaScript中一个常用的方法,其作用是对数组中的每个元素执行提供的函数,并将结果汇总成为一个返回值。从函数的命名可以看出,reduce主要是用来实现数组中元素的归纳操作,可以通过该方法将数组中的一系列值转化成一项值。举个例子,将一个数字数组中每个值相加可以通过reduce方法来实现。reduce方法...

js数组的reduce方法能计算数组中每个元素出现的次数吗?

reduce方法可以对数组的每个元素进行累加处理,从而计算数组中每个元素出现的次数。具体方法为:```javascript let arr = [1, 2, 2, 3, 3, 3];let result = arr.reduce((acc, val) => { if (val in acc) { acc[val]++;} else { acc[val] = 1;} return acc;}, {});console....

reduce的用法

Reduce的用法 一、基本概念 Reduce是一种在计算机编程中常用的函数或方法,它主要用于将序列中的元素通过指定的函数进行处理并合并为一个单一的结果。例如,可以使用reduce来求和、求最大值或进行数组的元素组合等。二、详细解释 1. 基本用法 在大多数编程语言中,如JavaScript,reduce方法通常用于数组。该...

reduce的用法

reduce的用法如下:1.reduce的用法1:reduce的基本意思是“减少”,指重量、程度、数目、范围、速度等减少或降低,不仅可以指量的变化,还可以指质的转变。引申可作“降职”“使…陷入某种状态或状况中”“将…概括或简化”“将…还原”“征服”“攻陷”等解。2.reduce的用法2:reduce可用作及物动词,也...

reduce decrease reduction用法 reduce用法详解 reduce用法例句 reduce用法和短语 repeat用法 require用法 accomplish用法 prefer用法
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
中国成年男子平均身高是多少?求大神帮助 72厘米大约是几尺几?求大神帮助 12.89公分等于多少厘米求大神帮助 我的阴茎9里米可以生儿子吗求大神帮助 一公分是几厘米?一尺又是几厘米?一丈是3米3吗求大神帮助 长安CS75新能源长安cs75跑高速油耗咋样? 首次业主大会筹备组中的代表是怎么产生的? 治安拘留期间能保释吗 求索爱手机自带的一个经典铃声,就是很多人用、很普遍的! 高分求索爱的tvb经典铃声!! 叶绞滕和伏苓,沙棘,丁香能一块喝吗? 沙棘茯苓甘草茶 沙棘和茯苓还有阿胶对肠胃炎有好处吗 卡地亚手镯四代五代差别是什么 卡地亚love项链多少克 怎么单独换王者荣耀里的头像 春天踏青发朋友圈的文案描写春天踏青的优美句子 他突然说要吃我豆腐该不该删了他 去如果有个大帅哥在公交车上吃你豆腐,你会怎么办?女生来回答 苹果手机语音备忘录怎么用? 职业大厅怎么去打工(魔兽随从派遣心得分享)「已解决」 壶口瀑布的景点介绍 黄河壶口瀑布文化内涵 ppt属性隐藏怎么恢复ppt属性隐藏怎么恢复默认设置 PPT里面的图片怎么转成可编辑ppt里面的图片怎么转成可编辑文字_百度知 ... 怎么在PPT中调高图片的像素? 身份证显示不出来相片要拿什么东西过去才能办理 ...论文挂两个老师的名字,一个是本校的,一个是外校的,先写谁的名字呀... 挑战杯指导老师可以是外校的吗 在新西兰留学期间如何保证自己的安全? 13种常见的JavaScript字符串操作方法汇总! 360云盘公司咋样 360云盘官网是不是收费 冬虫夏草的特征是什么 如何在word文档中搜索关键词如何在word文档中搜索关键词内容_百度知 ... 如何在多个Word文档中搜索某一关键字? word2003搜索功能在哪里? 族曾王母是什么意思怎么读 离职祝福语送朋友 族曾祖母的解释 离职的祝福语有那些? 外曾祖母怎么叫啊? 有多少被邮政忽悠买了保险? gre话题作文"质疑精神"怎么写 用My greae sunmer写作文!急急急! 我的右下腹有时候会卡痛和用力时候会痛但去大医院检查又都正常... 右下腹疼痛,肚脐左下,做B超也没事,也不是阑尾炎,看医院也没事,可还是... 我最近感觉右下腹疼痛,再小医院检查说是有慢形阑尾炎。但是去大医院检查... 请问晚上睡一宿觉,早起来两只手院,全院不上,手指头有点感觉,疼么园艺... leadsb后跟什么?todo还是dodoing