溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何用JavaScript求最大值

發(fā)布時(shí)間:2022-05-07 14:37:16 來(lái)源:億速云 閱讀:190 作者:iii 欄目:大數(shù)據(jù)

今天小編給大家分享一下如何用JavaScript求最大值的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

方法:1、使用“Math.max()”函數(shù)求最大值,可返回兩個(gè)指定的數(shù)中帶有較大的值的那個(gè)數(shù);2、使用遞歸函數(shù)求最大值;3、使用for循環(huán)遍歷求最大值;4、使用“Math.max.apply(null,[值,值,值,值..)”語(yǔ)句求最大值。

本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

第一種方法

Math.max

JavaScript 提供了 Math.max 函數(shù)返回一組數(shù)中的最大值,用法是:

Math.max([value1[,value2, ...]])

值得注意的是:

  • 如果有任一參數(shù)不能被轉(zhuǎn)換為數(shù)值,則結(jié)果為 NaN。

  • max 是 Math 的靜態(tài)方法,所以應(yīng)該像這樣使用:Math.max(),而不是作為 Math 實(shí)例的方法 (簡(jiǎn)單的來(lái)說(shuō),就是不使用 new )

  • 如果沒(méi)有參數(shù),則結(jié)果為 -Infinity (注意是負(fù)無(wú)窮大)

而我們需要分析的是:

1.如果任一參數(shù)不能被轉(zhuǎn)換為數(shù)值,這就意味著如果參數(shù)可以被轉(zhuǎn)換成數(shù)字,就是可以進(jìn)行比較的,比如:

Math.max(true, 0) // 1
Math.max(true, '2', null) // 2
Math.max(1, undefined) // NaN
Math.max(1, {}) // NaN

2.如果沒(méi)有參數(shù),則結(jié)果為 -Infinity,對(duì)應(yīng)的,Math.min 函數(shù),如果沒(méi)有參數(shù),則結(jié)果為 Infinity,所以:

var min = Math.min();
var max = Math.max();
console.log(min > max);

了解了 Math.max 方法,我們以求數(shù)組最大值的為例,思考有哪些方法可以實(shí)現(xiàn)這個(gè)需求。

原始方法

最最原始的方法,莫過(guò)于循環(huán)遍歷一遍:

var arr = [6, 4, 1, 8, 2, 11, 23];

var result = arr[0];
for (var i = 1; i < arr.length; i++) {
    result =  Math.max(result, arr[i]);
}
console.log(result);

reduce
既然是通過(guò)遍歷數(shù)組求出一個(gè)最終值,那么我們就可以使用 reduce 方法:

var arr = [6, 4, 1, 8, 2, 11, 23];

function max(prev, next) {
    return Math.max(prev, next);
}
console.log(arr.reduce(max));

apply

使用 apply 是另一種。

var arr = [6, 4, 1, 8, 2, 11, 23];
console.log(Math.max.apply(null, arr))

ES6 …

使用 ES6 的擴(kuò)展運(yùn)算符:

var arr = [6, 4, 1, 8, 2, 11, 23];
console.log(Math.max(...arr))

第二種方法

使用遞歸函數(shù)

var arr = [9,8,55,66,49,68,109,55,33,6,2,1];
var max = arr[0];
function findMax( i ){
  if( i == arr.length ) return max;
  if( max < arr[i] ) max = arr[i];
  findMax(i+1);
}
 
findMax(1);
console.log(max);

使用 for 循環(huán)遍歷

var arr = [9,8,55,66,49,68,109,55,33,6,2,1];  
var max = arr[0];
for(var i = 1; i < arr.length; i++){
  if( max < arr[i] ){
    max = arr[i];
  }
}
 
console.log(max);

使用apply將數(shù)組傳入max方法中直接返回

Math.max.apply(null,[9,8,55,66,49,68,109,55,33,6,2,1])

除此之外,還有很多數(shù)組排序方式,都可以在排序后,根據(jù)新數(shù)組索引值獲取 最大/最小 值。

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

多維數(shù)組可以這么修改:

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

以上就是“如何用JavaScript求最大值”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI