目錄es6
咱們會常常在開發過程當中,須要獲取數組中的最大值或者最小值,能夠從如下幾個方面考慮:數組
Math.max()
、Math.min()
方法下面咱們來看看,如何獲取下面數組的最大值(最小值相似獲取):瀏覽器
let arr = [1, 2, 5, 8, 10, 100, -1]
Math.max()
函數返回給定的一組數中的最大值。
它的語法:Math.max(value1[, value2, ...])
使用此方法,須要注意,若是沒有參數的話,則返回-Infinity
。若是有任一參數沒法被轉換成數值,則返回NaN
。app
擴展運算符,能夠將數組形式轉換爲逗號參數的形式。函數
Math.max(...arr)
利用apply()
方法的第一個參數能夠改變this的指向,第二個參數是數組的形式,來完成這一需求。this
Math.max.apply(null, arr)
既然apply()
方法能夠使用,那麼咱們也能夠使用call()
方法,並配合擴展運算符使用。3d
Math.max.call(null, ...arr)
reduce()
方法接收一個函數做爲累加器,數組中的每個值(從左到右)開始縮減,最終計算爲一個值。
語法:array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
在這裏,這個累加器函數就是getMax()
,比較兩個數,返回其中的最大值,經過這樣的縮減,最後返回整個數組的最大值。code
function getMax(prev, next) { return Math.max(prev, next) } arr.reduce(getMax)
假定數組中的第一個元素值最大max,循環數組,將max與其餘元素作比較,大的值賦給max。循環結束以後,max的值即爲最大值。blog
let max = arr[0] arr.forEach(item => max = item > max ? item : max) console.log(max) // 100
利用array.sort()
方法,指定排序函數,來排序數組。固然,你也能夠使用其餘排序方式,來排序數組。排序
let AS = arr.sort((a, b) => a - b) AS[arr.length-1] // 獲取最大值:100 AS[0] // 獲取最小值: -1
[完]