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 相关文章推荐
实现局部遮罩与关闭原理及代码
Feb 04 Javascript
js实现上传图片之上传前预览图片
Mar 25 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
Aug 18 Javascript
jquery操作select方法汇总
Feb 05 Javascript
JavaScript实现算术平方根算法-代码超简单
Sep 11 Javascript
详解Angular2中的编程对象Observable
Sep 17 Javascript
JS根据生日月份和日期计算星座的简单实现方法
Nov 24 Javascript
JS表格组件神器bootstrap table使用指南详解
Apr 12 Javascript
webpack学习教程之publicPath路径问题详解
Jun 17 Javascript
webpack构建的详细流程探底
Jan 08 Javascript
vue获取时间戳转换为日期格式代码实例
Apr 17 Javascript
javascript实现用户必须勾选协议实例讲解
Mar 24 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
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
2013/06/05 PHP
php socket通信简单实现
2016/11/18 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
2019/12/13 PHP
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
简单的js计算器实现
2016/10/26 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
详解element-ui中表单验证的三种方式
2019/09/18 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
[01:02:00]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第三场 1月24日
2021/03/11 DOTA
Python通过正则表达式选取callback的方法
2015/07/18 Python
Python魔法方法详解
2019/02/13 Python
python爬取内容存入Excel实例
2019/02/20 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
django中瀑布流写法实例代码
2019/10/14 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
高级护理专业大学生求职信
2013/10/24 职场文书
生产总经理岗位职责
2013/12/19 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
离婚协议书范文2014
2014/10/16 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
解决Golang time.Parse和time.Format的时区问题
2021/04/29 Golang