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。如果有任一參數無法被轉換成數值,則返回NaN

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

擴展運算符,可以將數組形式轉換為逗號參數的形式。

Math.max(...arr) 

1.2 結合apply/call方法來使用

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

Math.max.apply(null, arr) 

既然apply()方法可以使用,那么我們也可以使用call()方法,並配合擴展運算符使用。

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

1.3 結合reduce來使用

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

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

2. 排序獲取

2.1 只比較找出最大值

假定數組中的第一個元素值最大max,循環數組,將max與其他元素做比較,大的值賦給max。循環結束之后,max的值即為最大值。

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

瀏覽器中運行結果

獲取數組中的最大值

[完]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM