js獲取數組中的最大值/最小值

前言

咱們會常常在開發過程當中,須要獲取數組中的最大值或者最小值,能夠從如下幾個方面考慮:數組

  1. 使用Math.max()Math.min()方法
  2. 排序以後,獲取最大/最小值

下面咱們來看看,如何獲取下面數組的最大值(最小值相似獲取):瀏覽器

let arr = [1, 2, 5, 8, 10, 100, -1]

1. 使用Math的靜態方法max/min

Math.max()函數返回給定的一組數中的最大值。
它的語法:Math.max(value1[, value2, ...])
使用此方法,須要注意,若是沒有參數的話,則返回-Infinity。若是有任一參數沒法被轉換成數值,則返回NaNapp

1.1 結合ES6的擴展運算符...使用

擴展運算符,能夠將數組形式轉換爲逗號參數的形式。函數

Math.max(...arr)

1.2 結合apply/call方法來使用

利用apply()方法的第一個參數能夠改變this的指向,第二個參數是數組的形式,來完成這一需求。this

Math.max.apply(null, arr)

既然apply()方法能夠使用,那麼咱們也能夠使用call()方法,並配合擴展運算符使用。3d

Math.max.call(null, ...arr)

1.3 結合reduce來使用

reduce()方法接收一個函數做爲累加器,數組中的每個值(從左到右)開始縮減,最終計算爲一個值。
語法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
在這裏,這個累加器函數就是getMax(),比較兩個數,返回其中的最大值,經過這樣的縮減,最後返回整個數組的最大值。code

function getMax(prev, next) {
    return Math.max(prev, next)
}
arr.reduce(getMax)

2. 排序獲取

2.1 只比較找出最大值

假定數組中的第一個元素值最大max,循環數組,將max與其餘元素作比較,大的值賦給max。循環結束以後,max的值即爲最大值。blog

let max = arr[0]
arr.forEach(item => max = item > max ? item : max)
console.log(max) // 100

2.2 將整個數組都排序,獲取最大值

利用array.sort()方法,指定排序函數,來排序數組。固然,你也能夠使用其餘排序方式,來排序數組。排序

let AS = arr.sort((a, b) => a - b) 
AS[arr.length-1]  // 獲取最大值:100
AS[0] // 獲取最小值: -1

瀏覽器中運行結果

獲取數組中的最大值

[完]

相關文章
相關標籤/搜索