JavaScript 数组中最大最小值


Posted in Javascript onJune 05, 2016

现在获取数组中最大最小值用的越来越多了,于是乎我编了个方法供大家使用。代码如下,若有问题可以与我联系,咱们一起学习一起进步。

我们来看下示例一:

var numReg = /^-?[0-9]+.?[0-9]*$/

Array.prototype.min = function() {
  return this.reduce(function(preValue, curValue,index,array) {
   if ( numReg.test(preValue) && numReg.test(curValue) ) {
      return preValue > curValue ? curValue : preValue;
   } else if ( numReg.test(preValue) ) {
   return preValue;
   } else if ( numReg.test(curValue) ) {
   return curValue;
   } else {
   return 0;
   }
  })
}

Array.prototype.max = function() {
  return this.reduce(function(preValue, curValue,index,array) {
   if ( numReg.test(preValue) && numReg.test(curValue) ) {
      return preValue < curValue ? curValue : preValue;
   } else if ( numReg.test(preValue) ) {
   return preValue;
   } else if ( numReg.test(curValue) ) {
   return curValue;
   } else {
   return 0;
   }
  })
}

示例二:

function getMaximin (arr,maximin) { 
 if (maximin == "max") { 
  return Math.max.apply(Math, arr); 
 }else if (maximin == "min") { 
  return Math.min.apply(Math, arr); 
 } 
} 
 
var a = [3,2,4,2,10] 
 
var b = [12,4,45,786,9,78] 
 
alert("aMax:" + getMaximin(a,"max") + "---aMin:" + getMaximin(a,"min") + "---bMax:" + getMaximin(b,"max") + "---bMin:" + getMaximin(b,"min"))//aMax:10---aMin:2---bMax:786---bMin:4 
 
function getMaximin (arr,maximin) {
 if (maximin == "max") {
  return Math.max.apply(Math, arr);
 }else if (maximin == "min") {
  return Math.min.apply(Math, arr);
 }
}
 
var a = [3,2,4,2,10]
 
var b = [12,4,45,786,9,78]
 
alert("aMax:" + getMaximin(a,"max") + "---aMin:" + getMaximin(a,"min") + "---bMax:" + getMaximin(b,"max") + "---bMin:" + getMaximin(b,"min"))//aMax:10---aMin:2---bMax:786---bMin:4

我们再来看2个方法

方法一:

//最小值
Array.prototype.min = function() {
var min = this[0];
var len = this.length;
for (var i = 1; i < len; i++){ 
if (this[i] < min){ 
min = this[i]; 
} 
} 
return min;
}
//最大值
Array.prototype.max = function() { 
var max = this[0];
var len = this.length; 
for (var i = 1; i < len; i++){ 
if (this[i] > max) { 
max = this[i]; 
} 
} 
return max;
}

如果你是引入类库进行开发,害怕类库也实现了同名的原型方法,可以在生成函数之前进行重名判断:

if (typeof Array.prototype['max'] == 'undefined') { 
Array.prototype.max = function() { 
... ...
}
}

方法二:

用Math.max和Math.min方法可以迅速得到结果。apply能让一个方法指定调用对象与传入参数,并且传入参数是以数组形式组织的。恰恰现在有一个方法叫Math.max,调用对象为Math,与多个参数

Array.max = function( array ){ 
return Math.max.apply( Math, array );
};

Array.min = function( array ){ 
return Math.min.apply( Math, array );
};

但是,John Resig是把它们做成Math对象的静态方法,不能使用大神最爱用的链式调用了。但这方法还能更精简一些,不要忘记,Math对象也是一个对象,我们用对象的字面量来写,又可以省几个比特了。

Array.prototype.max = function(){ 
return Math.max.apply({},this) 
} 
Array.prototype.min = function(){ 
return Math.min.apply({},this) 
} 
[1,2,3].max()// => 3 
[1,2,3].min()// => 1
Javascript 相关文章推荐
JavaScript RegExp方法获取地址栏参数(面向对象)
Mar 10 Javascript
Javascript改变CSS样式(局部和全局)
Dec 18 Javascript
用jquery写的一个万年历(自写)
Jan 20 Javascript
jquery实现的V字形显示效果代码
Oct 27 Javascript
解析Node.js异常处理中domain模块的使用方法
Feb 16 Javascript
AngularJS 指令的交互详解及实例代码
Sep 14 Javascript
Vue.js 2.0和Cordova开发webApp环境搭建方法
Feb 26 Javascript
20个最常见的jQuery面试问题及答案
May 23 jQuery
jquery实现垂直无限轮播的方法分析
Jul 16 jQuery
JS操作字符串转数字的常见方法示例
Oct 29 Javascript
element中Steps步骤条和Tabs标签页关联的解决
Dec 08 Javascript
JavaScript事件的委托(代理)的用法示例详解
Feb 18 Javascript
使用three.js 画渐变的直线
Jun 05 #Javascript
jquery判断input值不为空的方法
Jun 05 #Javascript
jQuery四种选择器使用及示例
Jun 05 #Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
Jun 05 #Javascript
分享javascript实现的冒泡排序代码并优化
Jun 05 #Javascript
EasyUI布局 高度自适应
Jun 04 #Javascript
javascript获取select标签选中的值
Jun 04 #Javascript
You might like
用PHP ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
jQuery中is()方法用法实例
2015/01/06 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
天翼开放平台免费短信验证码接口使用实例
2013/12/18 Python
Python之reload流程实例代码解析
2018/01/29 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
python for 循环获取index索引的方法
2019/02/01 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
书香校园建设方案
2014/05/02 职场文书
清明节寄语2015
2015/03/23 职场文书
教学质量月活动总结
2015/05/11 职场文书
红色经典电影观后感
2015/06/18 职场文书
总结会主持词
2015/07/02 职场文书