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 相关文章推荐
细品javascript 寻址,闭包,对象模型和相关问题
Apr 27 Javascript
JavaScript中创建字典对象(dictionary)实例
Mar 31 Javascript
JavaScript判断对象是否为数组
Dec 22 Javascript
详解jQuery Mobile自定义标签
Jan 06 Javascript
深入分析javascript中console命令
Aug 14 Javascript
微信小程序实现滑动删除效果
May 19 Javascript
vue loadmore组件上拉加载更多功能示例代码
Jul 19 Javascript
Vue.js 事件修饰符的使用教程
Nov 01 Javascript
详解Vue-Router源码分析路由实现原理
May 15 Javascript
深入理解Vue keep-alive及实践总结
Aug 21 Javascript
vue使用better-scroll实现滑动以及左右联动
Jun 30 Javascript
JavaScript实现多层颜色选项卡嵌套
Sep 21 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
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
Javascript操作dom对象之select全面解析
2017/04/24 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
vue实现微信二次分享以及自定义分享的示例
2019/03/20 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
vue+element实现打印页面功能
2019/05/20 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
详解flask入门模板引擎
2018/07/18 Python
Python实现的特征提取操作示例
2018/12/03 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
2020/03/04 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
生产车间实习自我鉴定
2013/09/23 职场文书
公关关系专员的自我评价分享
2013/11/20 职场文书
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
项目副经理岗位职责
2013/12/30 职场文书
最新的互联网创业计划书
2014/01/10 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
公开致歉信
2019/06/24 职场文书