分享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 相关文章推荐
js表数据排序 sort table data
Feb 18 Javascript
初识javascript 文档碎片
Jul 13 Javascript
Javascript实现CheckBox的全选与取消全选的代码
Jul 20 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
Aug 16 Javascript
jQuery实现简单下拉导航效果
Sep 07 Javascript
理解JS事件循环
Jan 07 Javascript
对jQuary选择器的全面总结
Jun 20 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
May 11 Javascript
基于rollup的组件库打包体积优化小结
Jun 18 Javascript
node实现爬虫的几种简易方式
Aug 22 Javascript
jquery检测上传文件大小示例
Apr 26 jQuery
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
Sep 27 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
php5新改动之短标记启用方法
2008/09/11 PHP
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
关于PHP转换超过2038年日期出错的问题解决
2017/06/28 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
jquery 查找新建元素代码
2010/07/06 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
AngularJS中$http使用的简单介绍
2017/03/17 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
vue.js 解决v-model让select默认选中不生效的问题
2020/07/28 Javascript
使用Django的模版来配合字符串翻译工作
2015/07/27 Python
Python的Flask框架的简介和安装方法
2015/11/13 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
2019/08/24 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
python 基于opencv实现图像增强
2020/12/23 Python
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
行政总监岗位职责
2013/12/05 职场文书
工厂厂长的职责
2013/12/12 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
健康状况证明书
2014/11/26 职场文书
清洁工岗位职责
2015/02/13 职场文书
2016年“11.11”光棍节活动总结
2016/04/05 职场文书
python opencv通过按键采集图片源码
2021/05/20 Python
详解如何用Python实现感知器算法
2021/06/18 Python
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis