求數組中最大值和最小值的方法匯總

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

方法一:

//最小值

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

方法三:

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

方法四:

var a=[1,2,3,5];

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

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

多維數組可以這么修改:

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));//最小值

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,771評論 0 33
  • 單例模式 適用場景:可能會在場景中使用到對象,但只有一個實例,加載時并不主動創建,需要時才創建 最常見的單例模式,...
    Obeing閱讀 2,103評論 1 10
  • Javascript有很多數組的方法,有的人有W3C的API,還可以去MDN上去找,但是我覺得API上說的不全,M...
    頑皮的雪狐七七閱讀 4,207評論 0 6
  • 工廠模式類似于現實生活中的工廠可以產生大量相似的商品,去做同樣的事情,實現同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 7,842評論 2 17
  • 第一次見到這個讓我有點心疼的女生,是在一個燒烤聚會上,同學邀請我參加他公司周末聚餐,她趴在我同學的身上哭的歇斯底里...
    九汝竹書閱讀 354評論 1 5