首頁  >  文章  >  web前端  >  JavaScript如何求最大值

JavaScript如何求最大值

青灯夜游
青灯夜游原創
2021-06-23 17:34:2018573瀏覽

方法:1、使用「Math.max()」函數求最大值,可傳回兩個指定的數中帶有較大的值的那個數;2、使用遞歸函數求最大值; 3.使用for迴圈遍歷求最大值;4​​、使用「Math.max.apply(null,[值,值,值,值..)」語句求最大值。

JavaScript如何求最大值

本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

第一種方法

Math.max

JavaScript 提供了Math.max 函數傳回一組數中的最大值,用法是:

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

值得注意的是:

  • 如果有任一參數不能轉換為數值,則結果為NaN。

  • max 是Math 的靜態方法,所以應該像這樣使用:Math.max(),而不是作為Math 實例的方法(簡單的來說,就是不使用new )

  • 如果沒有參數,則結果為-Infinity (注意是負無窮大)

而我們需要分析的是:

1.如果任一參數不能被轉換為數值,這表示如果參數可以被轉換成數字,就是可以進行比較的,比如:

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

2.如果沒有參數,則結果為- Infinity,對應的,Math.min 函數,如果沒有參數,則結果為Infinity,所以:

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

了解了Math.max 方法,我們以求數組最大值的為例,思考有哪些方法可以實現這個需求。

原始方法

最最原始的方法,莫過於循環遍歷一遍:

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
既然是透過遍歷陣列求出一個最終值,那麼我們就可以使用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 的擴充運算子:

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

第二種方法

################ #使用遞歸函數###
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 循環遍歷###
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將數組傳入max方法中直接返回###
Math.max.apply(null,[9,8,55,66,49,68,109,55,33,6,2,1])
###除此之外,還有很多數組排序方式,都可以在排序後,根據新數組索引值取得最大/最小值。 ###
var a=[1,2,3,5];
console.log(Math.max.apply(null, a));//最大值
console.log(Math.min.apply(null, a));//最小值
###多維數組可以這麼修改:###
var a=[1,2,3,[5,6],[1,4,8]];
var ta=a.join(",").split(",");//转化为一维数组
console.log(Math.max.apply(null,ta));//最大值
console.log(Math.min.apply(null,ta));//最小值
###【相關推薦:###javascript學習教學######】#######

以上是JavaScript如何求最大值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn