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 autocomplete 使用手册
Apr 01 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
Dec 16 Javascript
js substring从右边获取指定长度字符串(示例代码)
Dec 23 Javascript
百度移动版的url编码解码示例
Apr 29 Javascript
推荐10 个很棒的 jQuery 特效代码
Oct 04 Javascript
自动完成的搜索框javascript实现
Feb 26 Javascript
温习Javascript基础语法之词法结构
May 31 Javascript
微信小程序 swiper制作tab切换实现附源码
Jan 21 Javascript
vue-resource调用promise取数据方式详解
Jul 21 Javascript
基于ajax和jsonp的原生封装(实例)
Oct 16 Javascript
微信小程序tabbar底部导航
Nov 05 Javascript
element表格翻页第2页从1开始编号(后端从0开始分页)
Dec 10 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面向对象学习笔记之一 基础概念
2012/10/06 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
2016/11/08 Javascript
js实现PC端和移动端刮卡效果
2020/03/27 Javascript
javascript数据结构中栈的应用之符号平衡问题
2017/04/11 Javascript
第一次记录Bootstrap table学习笔记(1)
2017/05/18 Javascript
详解Vue快速零配置的打包工具——parcel
2018/01/16 Javascript
jQuery中的类名选择器(.class)用法简单示例
2018/05/14 jQuery
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
实用的 vue tags 创建缓存导航的过程实现
2020/12/03 Vue.js
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
python3.0 字典key排序
2008/12/24 Python
python 布尔操作实现代码
2013/03/23 Python
python实现简单爬虫功能的示例
2016/10/24 Python
简单了解python模块概念
2018/01/11 Python
Python 判断奇数偶数的方法
2018/12/20 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
Vector, ArrayList, HashTable, HashMap哪些是线程安全的,哪些不是
2015/10/12 面试题
销售会计工作职责
2013/12/02 职场文书
竞选部门副经理的自荐书范文
2014/02/11 职场文书
高中生职业生涯规划书
2014/02/24 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
党员承诺书范文2015
2015/04/27 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL