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

分享JS数组求和与求最大值的方法

发布网友 发布时间:2022-04-20 08:02

我来回答

1个回答

热心网友 时间:2022-04-07 07:56

前言
面试遇到一个问题:JS数组求和函数。我第一想到的就是数组循环。然而我觉得面试官问这个问题一定不是想考这个人人皆知的方法。当时机智的我竟然想到了递归函数不断加和数组的项,然而折腾了好久都没调好方法,事实证明这并不是最优解。最后面试官问我有没有见过rece(),真木有哇。所以回来查资料,Array.rece()是ES5新增的新属性,相似的还有Array.receRight()。
下文来总结一下数组求和的方法。
最粗暴的方法:循环获取
通过for循环一项项地加和。看代码:
Array.prototype.sum
=
function
(){
var
result
=
0;
for(var
i
=
0;
i
<
this.length;
i++)
{
result
+=
this[i];
}
return
result;
};
[1,4,7,2,10].sum();
//
24
使用rece方法
利用rece方法,可以写一个数组求和的sum方法。
rece()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终为一个值。
rece的语法:
array.rece(callback[,
initialValue]);
callback函数接受4个参数:previousValue(上次调用回调返回的值)、currentValue(当前被处理的元素)、index(索引)以及数组本身(第一次调用
callback的第一个参数),执行数组中每个值的函数。
initialValue参数可选,表示初始值;initialValue参数若指定,则当作最初使用的previous值,如果缺省,则使用数组的第一个元素作为previous初始值,同时current往后排一位。
Array.prototype.sum
=
function
(){
return
this.rece(function
(partial,
value){
return
partial
+
value;
})
};
[1,4,7,2,10].sum();
//
24
相比第一种方法,使用rece()方法的效率更高。
这两种方法的效率比较可以直接在函数运行前后分别调用new
Date()获取即时时间,从而通过时间差比较执行时间。这里就不比较了,因为每个人的执行环境差异较大。测试结果是rece()方法的执行时间更短。
JS数组求和函数,并求出数组中的最大值
实例代码
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type"
content="text/html;
charset=gb2312"
/>
<title>脚本之家_js数组求和和最大值方法_脚本之家网</title>
<meta
name="keywords"
content="站长,网页特效,网页特效代码,js特效,js脚本,脚本,广告代码,jb51.net,www.jb51.net,脚本之家网"
/>
<meta
name="description"
content="www.jb51.net,脚本之家网,站长必备js特效及广告代码。大量高质量js特效,提供高质量广告代码下载,尽在脚本之家网"
/>
</head>
<body>
<a
href="http://www.jb51.net/">脚本之家网</a>,站长必备的高质量网页特效和广告代码。jb51.net,站长js特效。<hr>
<script
type="text/javascript">
//求和
Array.prototype.sum
=
function
()
{
for
(var
sum
=
i
=
0;
i
<
this.length;
i++)sum
+=
parseInt(this[i]);
return
sum
;
};
//求最大值
Array.prototype.maxima
=
function
()
{
for
(var
i
=
0,
maxValue
=
Number.MIN_VALUE;
i
<
this.length;
i++)parseInt(this[i])
>
maxValue
&&
(maxValue
=
this[i]);
return
maxValue;
};
//应用
var
arr
=
[1,21,3,4,22,45,60,7,32];
alert(arr.join("+")
+
"="
+
arr.sum());
alert(arr.join("|")
+
"中,
最大的数是:"
+
arr.maxima());
</script>
</body>
</html>
以上就是本文的全部内容,希望对大家使用JavaScript有所帮助哦,如果有疑问的话欢迎留言讨论,小编会及时回复大家的。
分享JS数组求和与求最大值的方法

相比第一种方法,使用reduce()方法的效率更高。这两种方法的效率比较可以直接在函数运行前后分别调用new Date()获取即时时间,从而通过时间差比较执行时间。这里就不比较了,因为每个人的执行环境差异较大。测试结果是reduce()方法的执行时间更短。JS数组求和函数,并求出数组中的最大值 实例代码 &lt;!DOCTYP...

js数组求和及最大值方法

求最大值,可以使用一句代码即可 Math.max.apply(null,A)求和,就需要用循环了 例如求和 var sum=0;for(var i=0;i&lt;n;i++){ sum+=A[i]}

JS 求数组中的最大值和最小值

JS中本身并没有一种方法可以直接使用,用来求得数组中的最大值和最小值,需要结合JS的数学计算对象Math 新建一个HTML文档,并定义标签script 定义一个数值数组,示例: var num=[1,3,5,88,66,99];使用Math.max()方法结合apply()方法求出数组中的最大值, apply()语法: apply(thisObj, array)...

js怎么取出数组中的最大值

方法如下:var t = new Array(1,11,111,1111,11111);//定义个数组var m = t[0];for(var i=1;i&lt;t.length;i++){ //循环数组 if(m&lt;t[i])m=t[i];}//该判断就可以判断整个数组的最大值

JS获取数组最大值、最小值及长度的方法

本文实例讲述了JS获取数组最大值、最小值及长度的方法。分享给大家供大家参考,具体如下://最小值 Array.prototype.min = function(){ var min = this[0];var len = this.length;for (var i = 1;i &lt; len;i++){ if (this[i]&lt; min){ min = this[i];} } return min;} //最大...

js如何求数组元素最大值在数组中的位置

定义一个变量a =数组第一个元素,b=0 (也就是在数组中的位置)。 然后 for 循环数组,拿数组的每个元素和a 比较。比a大的,赋值给a,然后b=当前for循环的值。 循环结束后,b就是最大数值的位置。。思路就是这样。自己写收获更大

一个JS数组,怎么计算所有值的和

方法一:var result = 0;for(var i = 0; i &lt; arra.length; i++) { result += arra[i];} 方法二:let sum = 0;function sumArr(arr){ return eval(arr.join(“+”));} sum = sumArr(arr);

js求数组最大值

求数组最大值的方法有很多。es6可以直接使用"Math.max(...array)",es5可以用"Math.max.apply(null,array)"。也可以考虑使用数组排序的方法,从大到小或者从小到大排序,然后取第一个或最后一个值。如果数组的结构比较复杂,可以用for循环,对数组的值进行判断,求出最大值。

请问js中对象数组求和代码怎么实现?

你好,实现代码如下:var arry = [{'id': 80, 'price': 50}, {'id': 20, 'price': 30}, {'id': 20, 'price': 300}];var strarr = [];for (let i in arry) { strarr.push(arry[i]['price'])};console.log(eval(strarr.join('+'))) //结果 以上是实现的代码,希...

JS数组常用操作方法--(数组会这些就够了)

20. 随机值:Math.random()和数组长度,如randomColor = colors[Math.floor(Math.random() * colors.length)]21. 倒序:reverse方法,如reversedColors = colors.reverse()22. lastIndexOf:查找重复元素的位置,如lastIndex = nums.lastIndexOf(5)23. 求和:reduce方法,如sum = nums.reduce((x,...

如何去掉最大值和最小值求和 去掉最大值和最小值求和 求数组中的最大值 不能求和怎么计算和的最大值 excel求和减最大值最小值 c语言一维数组求最大值 求和的最大值 C语言找出数组最大值 多条件求和取最大值
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
是不是人高马大就会欺负人 清明节扫墓注意事项 七个规矩要谨记 我在有家医院看病几天,总受气,护士对患者不够及时照顾,还横人态度... 猫传腹是什么原因造成的 怎么预防 如何预防的猫传腹 猫传腹怎么预防应激 康佳K17这部手机怎么样(用过的说) 手机QQ2010 怎么下载和使用啊? 召幸皇帝召幸后妃的方法 山寨版的手机能下载QQ2010版的吗? js需要一个查找一个数组中相同的元素算法。 JS计算数组个数? JS数组有哪几种定义方式? JS几种数组遍历方式总结 js数组组合算法。 要求[1,2,3,4],最后生成[[1,2... js数组选n算法 js中数组排序的方法 一个JS数组,怎么计算所有值的和 js数组组合算法。 js数组常用方法 苹果6a1586全网通是什么版本 自己营销编号办的ETC怎么查询? 中行上海ETC办理流程是什么? 去银行办理ETC不仅不收任何费用,而且还送加油卡,... ETC失效需重新认证?新型ETC诈骗需警惕 为什么有人说银行免费办ETC是圈套? 银行开门红礼品品种 到底是什么促使了ETC的爆火? 推广ETC佣金110高吗? 为什么最近各大银行狂推ETC,并且免费安装? JavaScript数字数组怎么按数子大小排序 js文本节点数组找到起始位置算法? js简单算法如何去除一个数组中与另一个数组中的值... 求个JS算法 js数组和对象哪个效率高 求js对象键名根据键值排序,按排序顺序产生新键名... js 中如何取出数组中的值? js两个数组排列组合 榛蘑生虫还能吃吗? 怎么清洗榛蘑上的虫子 新采摘的榛蘑有很多白色虫子 能吃吗? 榛蘑生虫怎么办 榛子树叶上的腻虫是什么生的? 旧榛子都有虫子是怎么回事 果榛子一般有哪些虫害 榛子食心虫最佳防治时间与药物! 大榛子打杀虫药最佳时间,一般在几月份打合适?一共... 榛子生虫了能吃么 榛子里面的这个虫子叫什么名字,怎么防治? 野生榛子怎样用药