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 添加节点的几种方法介绍
Sep 04 Javascript
js 动态为textbox添加下拉框数据源的方法
Apr 24 Javascript
jquery处理页面弹出层查询数据等待操作实例
Mar 25 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
Jul 01 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
Jun 19 Javascript
Node.js使用gm拼装sprite图片
Jul 04 Javascript
详解.vue文件中监听input输入事件(oninput)
Sep 19 Javascript
seajs中最常用的7个功能、配置示例
Oct 10 Javascript
JS实现关键词高亮显示正则匹配
Jun 22 Javascript
JS字典Dictionary类定义与用法示例
Feb 01 Javascript
vue中监听路由参数的变化及方法
Dec 06 Javascript
JavaScript实现H5接金币功能(实例代码)
Feb 22 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
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
2009/06/14 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
jQuery学习笔记 获取jQuery对象
2012/09/19 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
nodejs教程之入门
2014/11/21 NodeJs
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
Web服务器框架 Tornado简介
2014/07/16 Python
Python测试人员需要掌握的知识
2018/02/08 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
python生成九宫格图片
2018/11/19 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
Python编译为二进制so可执行文件实例
2019/12/23 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
sklearn和keras的数据切分与交叉验证的实例详解
2020/06/19 Python
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
机关财务管理制度
2014/01/17 职场文书
创建服务型党组织实施方案
2014/02/25 职场文书
python本地文件服务器实例教程
2021/05/02 Python