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 相关文章推荐
js中匿名函数的N种写法
Sep 08 Javascript
深入理解JavaScript 闭包究竟是什么
Apr 12 Javascript
动态的创建一个元素createElement及删除一个元素
Jan 24 Javascript
多个js毫秒倒计时同时进行效果
Jan 05 Javascript
原生JavaScript编写canvas版的连连看游戏
May 29 Javascript
浅谈JavaScript 浏览器对象
Jun 03 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
Jun 22 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
Jul 07 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
Oct 25 Javascript
node中的密码安全(加密)
Sep 17 Javascript
ES6的异步终极解决方案分享
Jul 11 Javascript
js前端如何写一个精确的倒计时代码
Oct 25 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中intval()等int转换时的意外异常情况
2013/06/21 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
php设计模式之装饰模式应用案例详解
2019/06/17 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
接收键盘指令的脚本
2006/06/26 Javascript
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
JavaScript为对象原型prototype添加属性的两种方式
2010/08/01 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
vue通过watch对input做字数限定的方法
2017/07/13 Javascript
JavaScript的setter与getter方法
2017/11/29 Javascript
Node.js中的child_process模块详解
2018/06/08 Javascript
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
Vue组件模板的几种书写形式(3种)
2020/02/19 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
利用Python演示数型数据结构的教程
2015/04/03 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
python实现画一颗树和一片森林
2018/06/25 Python
Python3最长回文子串算法示例
2019/03/04 Python
python 实现交换两个列表元素的位置示例
2019/06/26 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
浙大毕业生自荐信
2014/01/26 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书
董事长新年致辞
2015/07/29 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang