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效果 slideToggle() 方法(在隐藏和显示之间切换)
Jun 28 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
May 08 Javascript
window.open()详解及浏览器兼容性问题示例探讨
May 29 Javascript
IE8中使用javascript动态加载CSS的解决方法
Jun 17 Javascript
JavaScript检测上传文件大小的方法
Jul 22 Javascript
Node连接mysql数据库方法介绍
Feb 07 Javascript
Vuex之理解Store的用法
Apr 19 Javascript
jQuery实现简单日期格式化功能示例
Sep 19 jQuery
实战node静态文件服务器的示例代码
Mar 08 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
Apr 04 Javascript
Vue中的scoped实现原理及穿透方法
May 15 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
Nov 14 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
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
jQuery 源码分析笔记
2011/05/25 PHP
PHP中的cookie不用刷新就生效的方法
2012/02/04 PHP
PHP+memcache实现消息队列案例分享
2014/05/21 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
php搜索文件程序分享
2015/10/30 PHP
php代码架构的八点注意事项
2016/01/25 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
Javascript 面向对象特性
2009/12/28 Javascript
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
自己编写的类似JS的trim方法
2013/10/09 Javascript
使用js画图之画切线
2015/01/12 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
p5.js入门教程之图片加载
2018/03/20 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
详解vue组件中使用路由方法
2019/02/12 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
解密Python中的描述符(descriptor)
2015/06/03 Python
python 环境搭建 及python-3.4.4的下载和安装过程
2019/07/20 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
泰国演唱会订票网站:StubHub泰国
2018/02/26 全球购物
幼儿园中班开学寄语
2014/04/03 职场文书
汉语言文学专业求职信
2014/06/19 职场文书
2014年度思想工作总结
2014/11/27 职场文书
保护环境建议书作文500字
2015/09/14 职场文书
MongoDB 常用的crud操作语句
2021/06/20 MongoDB
Java网络编程之UDP实现原理解析
2021/09/04 Java/Android