本文给大家汇总介绍的是获取 JavaScript 数组中最大最小值的方法和示例,非常的详细和全面,希望对大家学习 JavaScript 能够有所帮助
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
现在获取数组中最大最小值用的越来越多了,于是乎我编了个方法供大家使用。代码如下,若有问题可以与我联系,咱们一起学习一起进步。
我们来看下示例一:
- 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
来源: http://www.phperz.com/article/17/0224/265150.html