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 相关文章推荐
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
Jan 22 Javascript
jQuery中:input选择器用法实例
Jan 03 Javascript
jquery ajax 如何向jsp提交表单数据
Aug 23 Javascript
jQuery实现判断控件是否显示的方法
Jan 11 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
Mar 02 Javascript
Vue获取DOM元素样式和样式更改示例
Mar 07 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
Dec 19 Javascript
使用veloticy-ui生成文字动画效果
Feb 08 Javascript
Vue 去除路径中的#号
Apr 19 Javascript
Vue v-for循环之@click点击事件获取元素示例
Nov 09 Javascript
angular8和ngrx8结合使用的步骤介绍
Dec 01 Javascript
vant实现购物车功能
Jun 29 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使用PDO调用mssql存储过程的方法示例
2017/10/07 PHP
Yii1.1框架实现PHP极光推送消息通知功能
2018/09/06 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
IE8 浏览器Cookie的处理
2009/01/31 Javascript
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
JavaScript数组的定义及数字操作技巧
2016/06/06 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
使用Math.max,Math.min获取数组中的最值实例
2017/04/25 Javascript
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
[37:03]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第二场 12.16
2020/12/18 DOTA
Python isinstance判断对象类型
2008/09/06 Python
Python深入06——python的内存管理详解
2016/12/07 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
pandas重新生成索引的方法
2018/11/06 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
康拓普公司Java笔面试
2016/09/23 面试题
什么是设计模式
2012/06/17 面试题
学校消防安全制度
2014/01/30 职场文书
珠宝的促销活动方案
2014/08/31 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
房屋产权证明书
2014/10/15 职场文书
地道战观后感2000字
2015/06/04 职场文书
企业团队精神心得体会
2016/01/19 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers