分享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 相关文章推荐
jQuery之折叠面板的深入解析
Jun 19 Javascript
js判断选择时间不能小于当前时间的示例代码
Sep 24 Javascript
JavaScript中的eval()函数使用介绍
Dec 31 Javascript
jquery使用remove()方法删除指定class子元素
Mar 26 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
Apr 19 Javascript
Javascript实现跑马灯效果的简单实例
May 31 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
Dec 12 Javascript
详解node.js平台下Express的session与cookie模块包的配置
Apr 26 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
May 02 Javascript
JavaScript实现左侧菜单效果
Dec 14 Javascript
基于js 各种排序方法和sort方法的区别(详解)
Jan 03 Javascript
js如何实现元素曝光上报
Aug 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
一个目录遍历函数
2006/10/09 PHP
php自动加载的两种实现方法
2010/06/21 PHP
php5.3 注意事项说明
2013/07/01 PHP
php使用百度天气接口示例
2014/04/22 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
PHP 获取指定地区的天气实例代码
2017/02/08 PHP
PHP时间函数使用详解
2019/03/21 PHP
Jquery使用val方法读写value值
2015/05/18 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
2018/04/26 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
vue-cli脚手架的.babelrc文件用法说明
2020/09/11 Javascript
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
如何使用python爬虫爬取要登陆的网站
2019/07/12 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
Python 多进程、多线程效率对比
2020/11/19 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
自我鉴定怎么写
2013/12/05 职场文书
经典商业广告词
2014/03/13 职场文书
个人委托书范本
2014/04/02 职场文书
学生安全责任书
2014/04/15 职场文书
优秀毕业生就业推荐信
2014/05/22 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
2015教师年度考核评语
2015/03/25 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python