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 相关文章推荐
用jscript实现新建和保存一个word文档
Jun 15 Javascript
jQuery代码优化之基本事件
Nov 01 Javascript
JavaScript中将一个值转换为字符串的方法分析[译]
Sep 21 Javascript
js实现的点击div区域外隐藏div区域
Jun 30 Javascript
每天一篇javascript学习小结(属性定义方法)
Nov 19 Javascript
jquery实现图片预加载
Dec 25 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
Oct 11 Javascript
JS跳转手机站url的若干注意事项
Oct 18 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
Nov 08 Javascript
详解vue中使用微信jssdk
Apr 19 Javascript
小程序如何自主实现拦截器的示例代码
Nov 04 Javascript
JavaScript canvas实现跟随鼠标移动小球
Feb 09 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防止SQL注入详解及防范
2013/11/12 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
网络之美 JavaScript中Get和Set访问器的实现代码
2010/09/19 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
关于JS数组追加数组采用push.apply的问题
2014/06/09 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
基于javascript实现tab切换特效
2016/03/29 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
2018/07/24 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
vue--vuex详解
2019/04/15 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
python实现简易学生信息管理系统
2020/04/05 Python
django实现类似触发器的功能
2019/11/15 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
新入职员工的自我介绍演讲稿
2014/01/02 职场文书
质检部经理岗位职责
2014/02/19 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
捐助感谢信
2015/01/22 职场文书
社区母亲节活动总结
2015/02/10 职场文书
中学生自我评价2015
2015/03/03 职场文书
市级三好生竞选稿
2015/11/21 职场文书
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers