分享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 相关文章推荐
Google排名中的10个最著名的 JavaScript库
Apr 27 Javascript
jquery实现的一个导航滚动效果具体代码
May 27 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
Aug 13 Javascript
javascript eval(func())使用示例
Dec 05 Javascript
jquery解析xml字符串简单示例
Apr 11 Javascript
JS实现来回出现文字的状态栏特效代码
Oct 31 Javascript
使用Ajax与服务器(JSON)通信实例
Nov 04 Javascript
Bootstrap笔记之缩略图、警告框实例详解
Mar 09 Javascript
微信浏览器禁止页面下拉查看网址实例详解
Jun 28 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
May 07 Javascript
在vue项目中使用sass语法问题
Jul 18 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
Sep 07 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实现在服务器端调整图片大小的方法
2015/06/16 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
php 生成加密公钥加密私钥实例详解
2017/06/16 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
[原创]保存的js无法执行的解决办法
2007/02/25 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
解决vue addRoutes不生效问题
2020/08/04 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
JavaScript实现筛选数组
2021/03/02 Javascript
Python实现对PPT文件进行截图操作的方法
2015/04/28 Python
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
python os.listdir按文件存取时间顺序列出目录的实例
2018/10/21 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
Python continue语句实例用法
2020/02/06 Python
pygame实现飞机大战
2020/03/11 Python
Python3开发环境搭建详细教程
2020/06/18 Python
Python定义一个Actor任务
2020/07/29 Python
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
几道数据库的面试题或笔试题
2014/05/31 面试题
如何写一封打动人心的求职信
2014/02/17 职场文书
房产继承公证书
2014/04/09 职场文书
毕业生找工作求职信
2014/08/05 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
2017元旦、春节期间廉洁自律承诺书
2016/03/25 职场文书