1. 程式人生 > >獲取陣列中 最大值 和 最小值

獲取陣列中 最大值 和 最小值

方法一:

//最小值

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 ){

returnMath.max.apply( Math, array );

};

Array.min = function( array ){

returnMath.min.apply( Math, array );

};

但是,John Resig是把它們做成Math物件的靜態方法,不能使用大神最愛用的鏈式呼叫了。但這方法還能更精簡一些,不要忘記,Math物件也是一個物件,我們用物件的字面量來寫,又可以省幾個位元了。

Array.prototype.max = function(){

returnMath.max.apply({},

this)

}

Array.prototype.min = function(){

returnMath.min.apply({},this)

}

[1,2,3].max()// => 3

[1,2,3].min()// => 1

 

方法三:

functiongetMaximin(arr,maximin)

{

if(maximin=="max")

{

returnMath.max.apply(Math,arr);

}

elseif(maximin=="min")

{

returnMath.min.apply(Math, arr);

}

}

vara=[3,2,4,2,10];

varb=[12,4,45,786,9,78];

console.log(getMaximin(a,"max"));//10

console.log(getMaximin(b,"min"));//04

 

方法四:

vara=[1,2,3,5];

alert(Math.max.apply(null, a));//最大值

alert(Math.min.apply(null, a));//最小值

多維陣列可以這麼修改:

vara=[1,2,3,[5,6],[1,4,8]];

varta=a.join(",").split(",");//轉化為一維陣列

alert(Math.max.apply(null,ta));//最大值

alert(Math.min.apply(null,ta));//最小值