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


Posted in Javascript onAugust 11, 2016

前言

面试遇到一个问题:JS数组求和函数。我第一想到的就是数组循环。然而我觉得面试官问这个问题一定不是想考这个人人皆知的方法。当时机智的我竟然想到了递归函数不断加和数组的项,然而折腾了好久都没调好方法,事实证明这并不是最优解。最后面试官问我有没有见过reduce(),真木有哇。所以回来查资料,Array.reduce()是ES5新增的新属性,相似的还有Array.reduceRight()。

下文来总结一下数组求和的方法。

最粗暴的方法:循环获取

通过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

使用reduce方法

利用reduce方法,可以写一个数组求和的sum方法。

reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终为一个值。

reduce的语法:

array.reduce(callback[, initialValue]);

callback函数接受4个参数:previousValue(上次调用回调返回的值)、currentValue(当前被处理的元素)、index(索引)以及数组本身(第一次调用 callback的第一个参数),执行数组中每个值的函数。

initialValue参数可选,表示初始值;initialValue参数若指定,则当作最初使用的previous值,如果缺省,则使用数组的第一个元素作为previous初始值,同时current往后排一位。

Array.prototype.sum = function (){
 return this.reduce(function (partial, value){
  return partial + value;
 })
};
[1,4,7,2,10].sum(); // 24

相比第一种方法,使用reduce()方法的效率更高。

这两种方法的效率比较可以直接在函数运行前后分别调用new Date()获取即时时间,从而通过时间差比较执行时间。这里就不比较了,因为每个人的执行环境差异较大。测试结果是reduce()方法的执行时间更短。

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脚本,脚本,广告代码,3water.com,3water.com,三水点靠木网" />

<meta name="description" content="3water.com,三水点靠木网,站长必备js特效及广告代码。大量高质量js特效,提供高质量广告代码下载,尽在三水点靠木网" />

</head>

<body>

<a href="https://3water.com/">三水点靠木网</a>,站长必备的高质量网页特效和广告代码。3water.com,站长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有所帮助哦,如果有疑问的话欢迎留言讨论,小编会及时回复大家的。

Javascript 相关文章推荐
javascript两段代码,两个小技巧
Feb 04 Javascript
js获取判断上传文件后缀名的示例代码
Feb 19 Javascript
JavaScript获取路径设计源码
May 22 Javascript
浅谈javascript 函数内部属性
Jan 21 Javascript
分享15个大家都熟知的jquery小技巧
Dec 02 Javascript
纯原生js实现贪吃蛇游戏
Apr 16 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
Jul 21 Javascript
基于对象合并功能的实现示例
Oct 10 Javascript
浅谈node.js 命令行工具(cli)
May 10 Javascript
VueX模块的具体使用(小白教程)
Jun 05 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
Nov 05 Javascript
JavaScript原型链中函数和对象的理解
Jun 16 Javascript
利用JavaScript阻止表单提交的两种方法
Aug 11 #Javascript
防止Node.js中错误导致进程阻塞的办法
Aug 11 #Javascript
JavaScript中 ES6 generator数据类型详解
Aug 11 #Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
Aug 11 #Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
Aug 11 #Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
Aug 11 #Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
Aug 11 #Javascript
You might like
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
thinkPHP框架实现生成条形码的方法示例
2018/06/06 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
List the Codec Files on a Computer
2007/06/11 Javascript
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
window.location 对象所包含的属性
2014/10/10 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
JavaScript实现垂直向上无缝滚动特效代码
2016/11/23 Javascript
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
ES6中Array.find()和findIndex()函数的用法详解
2017/09/16 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
2020/03/12 Javascript
Python datetime时间格式化去掉前导0
2014/07/31 Python
Python运用于数据分析的简单教程
2015/03/27 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
浅析python中numpy包中的argsort函数的使用
2018/08/30 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
Joe Fresh官网:加拿大时尚品牌和零售连锁店
2016/11/30 全球购物
学校门卫岗位职责
2014/03/16 职场文书
公司年会策划方案
2014/05/17 职场文书
怎么写工作检讨书
2014/11/16 职场文书
接待员岗位职责
2015/02/13 职场文书
员工自我评价范文
2015/03/11 职场文书
假如给我三天光明:舟逆水而行,人遇挫而达 
2019/10/29 职场文书
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers