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+ACTIVEX实现网页选择本地目录路径对话框
Mar 18 Javascript
JavaScript严格模式禁用With语句的原因
Oct 20 Javascript
jQuery函数map()和each()介绍及异同点分析
Nov 08 Javascript
javascript中cookie对象用法实例分析
Jan 30 Javascript
jquery对所有input type=text的控件赋值实现方法
Dec 02 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
Jan 05 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
Apr 19 Javascript
JavaScript之RegExp_动力节点Java学院整理
Jun 29 Javascript
Next.js项目实战踩坑指南(笔记)
Nov 29 Javascript
如何解决.vue文件url引用文件的问题
Jan 18 Javascript
sortable+element 实现表格行拖拽的方法示例
Jun 07 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
Aug 20 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
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
PHP使用Session实现上传进度功能详解
2019/08/06 PHP
记录几个javascript有关的小细节
2007/04/02 Javascript
用jQuery技术实现Tab页界面之二
2009/09/21 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
babel基本使用详解
2017/02/17 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
vue的.vue文件是怎么run起来的(vue-loader)
2018/12/10 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
Python用户推荐系统曼哈顿算法实现完整代码
2017/12/01 Python
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
Python实现播放和录制声音的功能
2020/08/12 Python
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
TCP/IP的分层模型
2013/10/27 面试题
C#基础面试题
2016/10/17 面试题
《一株紫丁香》教学反思
2014/02/19 职场文书
大学班级文化建设方案
2014/05/06 职场文书
广播体操比赛口号
2014/06/10 职场文书
单位介绍信格式
2015/01/31 职场文书
医院党建工作总结2015
2015/05/26 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL