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

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

发布网友 发布时间:2022-05-10 10:32

我来回答

2个回答

热心网友 时间:2022-05-10 12:01

前言
一般而言,可以通过rece方法实现的逻辑都可以通过forEach方法来变相的实现,虽然不清楚浏览器的js引擎是如何在C++层面实现这两个方法,但是可以肯定的是rece方法肯定也存在数组的遍历,在具体实现细节上是否针对数组项的操作和存储做了什么优化,则不得而知。
数组的rece方法的应用
rece方法有两个参数,第一个参数是一个callback,用于针对数组项的操作;第二个参数则是传入的初始值,这个初始值用于单个数组项的操作。需要注意的是,rece方法返回值并不是数组,而是形如初始值的经过叠加处理后的操作。
rece方法最常见的场景就是叠加。
var
items
=
[10,
120,
1000];
//
our
recer
function
var
recer
=
function
add(sumSoFar,
item)
{
return
sumSoFar
+
item;
};
//
do
the
job
var
total
=
items.rece(recer,
0);
console.log(total);
//
1130
可以看出,rece函数根据初始值0,不断的进行叠加,完成最简单的总和的实现。
前文中也提到,rece函数的返回结果类型和传入的初始值相同,上个实例中初始值为number类型,同理,初始值也可为object类型。
var
items
=
[10,
120,
1000];
//
our
recer
function
var
recer
=
function
add(sumSoFar,
item)
{
sumSoFar.sum
=
sumSoFar.sum
+
item;
return
sumSoFar;
};
//
do
the
job
var
total
=
items.rece(recer,
{sum:
0});
console.log(total);
//
{sum:1130}
多重叠加
使用rece方法可以完成*度的数据叠加。如上例中的初始值{sum:
0}
,这仅仅是一个维度的操作,如果涉及到了多个属性的叠加,如{sum:
0,totalInEuros:
0,totalInYen:
0}
,则需要相应的逻辑进行处理。
在下面的方法中,采用分而治之的方法,即将rece函数第一个参数callback封装为一个数组,由数组中的每一个函数单独进行叠加并完成rece操作。所有的一切通过一个manager函数来管理流程和传递初始参数。
var
manageRecers
=
function(recers)
{
return
function(state,
item)
{
return
Object.keys(recers).rece(
function(nextState,
key)
{
recers[key](state,
item);
return
state;
},
{}
);
}
};
上面就是manager函数的实现,它需要recers对象作为参数,并返回一个callback类型的函数,作为rece的第一个参数。在该函数内部,则执行*的叠加工作(
Object.keys()
)。
通过这种分治的思想,可以完成目标对象多个属性的同时叠加,完整代码如下:
var
recers
=
{
totalInEuros
:
function(state,
item)
{
return
state.euros
+=
item.price
*
0.897424392;
},
totalInYen
:
function(state,
item)
{
return
state.yens
+=
item.price
*
113.852;
}
};
var
manageRecers
=
function(recers)
{
return
function(state,
item)
{
return
Object.keys(recers).rece(
function(nextState,
key)
{
recers[key](state,
item);
return
state;
},
{}
);
}
};
var
bigTotalPriceRecer
=
manageRecers(recers);
var
initialState
=
{euros:0,
yens:
0};
var
items
=
[{price:
10},
{price:
120},
{price:
1000}];
var
totals
=
items.rece(bigTotalPriceRecer,
initialState);
console.log(totals);
总结
以上就是Javascript中内建函数rece应用的全部内容,希望本文的内容对大家的学习或者工作能有所帮助,如果有疑问大家可以留言交流。
Javascript中内建函数reduce的应用详解

reduce方法有两个参数,第一个参数是一个callback,用于针对数组项的操作;第二个参数则是传入的初始值,这个初始值用于单个数组项的操作。需要注意的是,reduce方法返回值并不是数组,而是形如初始值的经过叠加处理后的操作。reduce方法最常见的场景就是叠加。var items = [10,120,1000];// our redu...

22.【Python学习分享文章】_build-in function(内建函数)

本文主要介绍Python内建函数,包括filter()、map()、reduce()、zip()。这些函数用于数据处理,如合并、累加等。filter()功能为筛选数据,根据设定规则过滤原始数据,类比于筛沙过程。使用filter()时,原始数据为原料沙石,处理规则为筛眼大小,处理后数据为细分沙石。提供filter()使用示例。map()功能为构...

javascript中 是什么意思?

在Javascript中,是指的是一个常用的逻辑运算符。它表示“与”的关系,只有当两个操作数都为真时才返回真,否则返回假。例如,表达式(1 === 1) && (2 === 2)的结果就是true,而表达式(1 === 1) && (2 === 3)的结果则是false。此外,在Javascript中,is通常被用来判断一个变量是否是某...

MapReduce用途

MapReduce在执行过程中会生成大量的临时文件,为了优化性能,Google文件系统被巧妙地应用,负责管理和访问这些文件,确保数据处理的高效进行。此外,Nutch项目曾开发了一个实验性的MapReduce实现,这个项目后来发展成为了大名鼎鼎的Hadoop。这表明,MapReduce技术在开源社区中得到了广泛应用和扩展。另一值得一提的...

如何在代码中提交Mapreduce作业?

首先在class Job内部通过JobClient完成作业的提交,最终由JobClient完成与JobTracker的交互功能。在JobClient的构造函数中,通过调用RPC完成与JobTracker连接的建立。完成建立后,JobClient首先确定job相关文件的存放位置(我们上面提到mapreduce没有采用将jar即其他文件传输给JobTracker的方式,而是将这些文件保存到...

【TF2.1学习笔记5】常用函数

1. **tf.cast, tf.math.reduce_min, tf.math.reduce_max**:这些函数用于张量或数组操作。tf.cast用于类型转换,而tf.math.reduce_min和tf.math.reduce_max分别用于计算张量中最小值和最大值。操作维度可以通过axis参数指定。2. **axis**:表示在张量或数组中进行的维度操作。axis=0代表行操作...

数组的常用方法

JavaScript中创建数组有两种方式(一)使用 Array 构造函数:var arr1 = new Array(); //创建一个空数组var arr2 = new Array(20); // 创建一个包含20项的数组var arr3 = new Array(“lily”,“lucy”,“Tom”); // 创建一个包含3个字符串的数组(二)var 创建数组var arr4 = []; //创建一个空数...

javascript数组的foreach方法如何使用?

`reduce`是JavaScript中处理数组元素的另一个强大的方法。它允许我们使用回调函数来将数组元素组合成单一值。`reduce`在遍历数组时,接收当前元素、索引以及当前累计的值作为参数。通过这种方法,可以轻松地进行复杂的数组操作,如求和、求平均值等。为了更深入地理解`reduce`的使用方法及其案例,可以参考以下...

程序员的数学基础课:编程中的数学思维

编程语句中的条件语句、循环和函数调用,都与布尔逻辑、迭代和递归紧密相连。基础算法如MapReduce的数据切分与负载均衡,以及字符串编辑距离的计算(如RK算法),都是数学思想在实际问题中的应用。分治、动态规划和回溯,如八皇后问题和0/1背包问题,更是展示了数学方法解决复杂问题的威力。时间与空间的复杂...

深入浅出JavaScript(影印版)目录

第5章《循环:不怕重复,只怕无序》(Chapter 5: Looping: At the Risk of Repeating Myself)讲解循环结构,让你掌握如何高效地进行数据处理和遍历。第6章《函数:精简、重用、再循环》(Chapter 6: Functions: Reduce, Reuse, Recycle)深入解析函数的使用,提升代码的模块化和复用性。第7章《表单与...

matlab reduce的函数 map函数和reduce的功能 reduce decrease matlab的用法reduce python中eval函数作用 reduce函数用法 reduce函数作用 pythonreduce函数 python3 reduce函数
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
西安光泰电子有限公司怎么样? 女人喝茶会长黑色素吗 ...时候会黑屏,按什么键都不管用,必须等对方挂电话才出来 宇宙在未来星球有可能毁灭吗?每个星球至少可以存活多久时间?地球要过... 宇宙还能存活多少年? 宇宙还能存活多少年? steam怎么检测已经有的游戏 有房贷能办不动产证吗? 冬天,寒冷的,秋天,哥哥,学生,班,教室,椅子,电脑的单词分别是? 诺基亚6500S怎么装百阅软件 离婚男人老是在朋友圈发一些感情话语是什么意思? 2013网络用语盘点 网络用语还有什么? 离婚后老公朋友圈动态能作为出轨的证据吗? 给我一些网络语言吧 现在流行的网络用语都有哪些啊? 被73是什么意思 73什么意思 73的网络用语 青岛胶南海尔洗衣机有限公司怎么样? 青岛海尔洗衣机电源版发生火花后不能转动,但电源保险菅不烧,如捡查? 青岛海尔洗衣机有限公司怎么样? 内蒙古蘑菇云网络技术有限公司怎么样? 呼和浩特市新里程人力资源服务有限责任公司怎么样? 内蒙古方鼎金荣企业服务有限责任公司怎么样? 内蒙古优步汽车租赁有限公司怎么样? 内蒙古国泰君安汽车服务有限公司怎么样? 关于历史上的“烛影斧声”,当时的司马光是怎样记载的,这次事件到底是不是一起谋杀事件? 内蒙古隆东汽车租赁有限公司怎么样? 内蒙古首通汽车租赁有限公司怎么样? 泰州市广播电视大学的学校概述 泰州电大在哪里? 泰州市广播电视大学的学校领导 泰州电大概况 泰州电大有没有成人自考,,地址在哪。。 姜堰电大又叫什么啊 泰州师范、电大、南师泰州学院到底是怎样个关系?? 我是初中毕业,现在22了,想上泰州市的电大,是不是必须要高中毕业才能上学??? 泰州有哪些夜校?什么时候开始报名? 江苏泰州有什么大学(本科、专科)??? 泰州火车站去迎春东路1号(泰州广播电视大学)坐几路公交啊? 泰州市哪几个学校可以函授大专? 我是2010届高中毕业的,工作了一年,现在想继续上学或者是学个专业,想问泰州有哪些学校可以去 泰州学院(原泰州师范高等专科学校)怎么样(详细一些)? 五险一金扣500多什么档位 新车,小刮蹭,走保险合适吗 mathematics中的reduce函数怎么用 宗艺节目上的真人视频可以转发吗 我转播了别人的视频,他说我侵权怎么办? 转发别人文章视频违规吗