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 相关文章推荐
ajax请求get与post的区别总结
Nov 04 Javascript
jquery获取css中的选择器(实例讲解)
Dec 02 Javascript
JavaScript设计模式之抽象工厂模式介绍
Dec 28 Javascript
一不小心就做错的JS闭包面试题
Nov 25 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
Jan 18 Javascript
微信小程序开发(一) 微信登录流程详解
Jan 11 Javascript
VsCode插件整理(小结)
Sep 14 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
Apr 24 Javascript
Vuex 使用及简单实例(计数器)
Aug 29 Javascript
Angular2实现的秒表及改良版示例
May 10 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
Mar 06 Javascript
详解Vue的options
May 15 Vue.js
使用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使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
PHP date()格式MySQL中插入datetime方法
2019/01/29 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
将文本输入框内容加入表中的js代码
2013/08/18 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
jquery 取子节点及当前节点属性值
2014/07/25 Javascript
javascript解析json实例详解
2014/11/05 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
2015/11/30 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python实现的简单RPG游戏流程实例
2015/06/28 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
Python调用C语言的方法【基于ctypes模块】
2018/01/22 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
python新手学习使用库
2020/06/11 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
HTML5中5个简单实用的API
2014/04/28 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
工作中的自我评价如何写好
2013/10/28 职场文书
青年文明号服务承诺
2014/03/31 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
python实现简单的聊天小程序
2021/07/07 Python
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server
Python if else条件语句形式详解
2022/03/24 Python
Python开发五子棋小游戏
2022/04/28 Python