js數組最大值max和最小值min


比較數組中數值的大小是比較常見的操作,比較大小的方法有多種,比如可以使用自帶的sort()函數,下面來介紹如下幾種方法,代碼如下:

方法一:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//最小值
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;
}

如果你是引入類庫進行開發,害怕類庫也實現了同名的原型方法,可以在生成函數之前進行重名判斷:

?
1
2
3
4
5
if ( typeof Array.prototype[ 'max' ] == 'undefined' ) {
Array.prototype.max = function () {
... ...
}
}

方法二:

用Math.max和Math.min方法可以迅速得到結果。apply能讓一個方法指定調用對象與傳入參數,並且傳入參數是以數組形式組織的。恰恰現在有一個方法叫Math.max,調用對象為Math,與多個參數

?
1
2
3
4
5
6
Array.max = function ( array ){
return Math.max.apply( Math, array );
};
Array.min = function ( array ){
return Math.min.apply( Math, array );
};

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

?
1
2
3
4
5
6
7
8
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

方法三:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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];
console.log(getMaximin(a, "max" )); //10
console.log(getMaximin(b, "min" )); //04

方法四:

?
1
2
3
var a=[1,2,3,5];
alert(Math.max.apply( null , a)); //最大值
alert(Math.min.apply( null , a)); //最小值

多維數組可以這么修改:

?
1
2
3
4
var a=[1,2,3,[5,6],[1,4,8]];
var ta=a.join( "," ).split( "," ); //轉化為一維數組
alert(Math.max.apply( null ,ta)); //最大值
alert(Math.min.apply( null ,ta)); //最小值

以上內容是小編給大家分享的Javascript獲取數組中的最大值和最小值的方法匯總,希望大家喜歡。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM