如何在 JavaScript 中查詢陣列的最小/最大元素?


在本教程中,我們將學習在 JavaScript 中查詢陣列的最大和最小元素的不同方法。最小元素是陣列中所有元素中最小的元素,而最大元素是其中最大的元素。

以下是我們可以用來查詢陣列的最小/最大元素的方法。

  • 遍歷整個陣列
  • 使用 Math.min() 和 Math.max() 方法。

讓我們藉助程式示例來討論這些方法。

方法 1:遍歷整個陣列

在這種方法中,我們將使用for迴圈遍歷整個陣列,並將當前元素與較小元素的前一個值進行比較;如果當前元素小於較小元素的前一個值,則我們將更新其值。類似地,對於最大元素,如果當前元素大於最大元素的前一個值,我們將更新其值。解決此問題將需要線性O(n)時間。

讓我們來看一個上述方法的示例,以便更好地理解其實現 -

步驟

  • 步驟 1 - 在第一步中,我們將定義一個我們將搜尋最小和最大元素的數字陣列,並宣告最小和最大變數,其初始值為分配給兩者的陣列的第一個元素。
  • 步驟 2 - 在下一步中,我們需要使用 for 迴圈來遍歷陣列,並使用更新最小和最大變數值的邏輯。
  • 步驟 3 - 在此步驟中,我們將編寫邏輯以使用 JavaScript 在使用者螢幕上顯示輸出。

示例 1

以下示例將說明使用O(1)額外空間的簡單遍歷方法。

<html> <body> <p>The original array: [28, 45, 69, 20, 15, 7, 98]</p> <p id="result"></p> <script> let array = [28, 45, 69, 20, 15, 7, 98]; let min = array[0], max = array[0]; for (let i = 1; i < array.length; i++) { if (array[i] > max) max = array[i]; if (array[i] < min) min = array[i]; } document.getElementById('result').innerHTML = "The maximum or the largest element of the array is: " + max + "<br>" + "The minimum or the smallest element of the array is: " + min; </script> </body> </html>

在此示例中,我們聲明瞭一個名為array的數字陣列,然後聲明瞭兩個變數minmax,其初始值為陣列的第一個元素,這兩個變數都將表示陣列中的最小和最大元素。執行這些步驟後,我們將使用 for 迴圈遍歷陣列元素,並在每次迭代中將minmax的值更新為陣列中當前的最小和最大元素。

方法 2:使用 Math.min() 和 Math.max() 方法

在這種查詢陣列中最大和最小元素的方法中,我們將使用 JavaScript 的內建Math.max()Math.min()方法以及apply()方法或陣列解構語法。

Math.max()Math.min()方法僅適用於一次多個數值。Math.max()方法返回傳遞給它的所有數字中的最大數字,而Math.min()返回最小值。但是,這兩種方法都不適用於陣列,因為它們僅用於不同的數字。

因此,要使用這些方法在陣列中查詢最小/最大元素,我們需要將陣列轉換為一組不同的數字。在ES6ES2015之前,我們將使用apply()方法將陣列轉換為一組不同的數字。但在ES6之後,當引入陣列解構語法來解構陣列時,我們開始使用該語法來實現相同目的。

讓我們看看使用上述兩種方法在 JavaScript 中查詢陣列中最小/最大元素的實現。

使用 apply() 方法

在 JavaScript 中,apply() 方法使用兩個引數呼叫,第一個是this值,另一個是我們正在其中搜索最小/最大元素的陣列。

語法

let arr=[];
let min=Math.min.apply(null, arr);
let max=Math.max.apply(null, arr);

在上述語法中,我們使用null代替this值,因為在這種情況下我們不需要此變數。

示例 2

以下示例將說明如何將 Math.max() 和 Math.min() 方法與 JavaScript 的 apply() 方法結合使用。

<html> <body> <p>The array : [49, 58, 22, 17, 79, 6, 92]</p> <p id="result"></p> <script> let array = [49, 58, 22, 17, 79, 6, 92]; let min = Math.min.apply(null, array); let max = Math.max.apply(null, array); document.getElementById('result').innerHTML = "The max element: " + max + "<br>" + "The min element: " + min ; </script> </body> </html>

使用陣列解構語法方法

陣列解構首先是在引入 ES6 時引入的。陣列解構是一種非常有用的方法。它可以用於區分陣列的元素,合併兩個陣列,單獨訪問陣列元素。

在這種情況下,我們將使用此語法來區分陣列的數字。

語法

以下是陣列解構的語法。

let arr=[];
console.log(…arr); // logs the array elements distinctly in the console

我們在要解構的陣列名稱之前使用三個點(…)。

示例 3

以下示例將說明如何將陣列解構與 JavaScript 的 Math.max() 和 Math.min() 方法結合使用,以在陣列中查詢最小/最大值 -

<html> <body> <p>The array is: [56, 68, 23, 9, 77, 65, 2, 89]</p> <p id="result"></p> <script> let array = [56, 68, 23, 9, 77, 65, 2, 89]; let min = Math.min(...array); let max = Math.max(...array); document.getElementById('result').innerHTML = "The maximum element of the array is: <b>" + max + "</b><br>" + "The minimum element of the array is: <b>" + min + "</b>"; </script> </body> </html>

在以上兩個示例中,我們都看到了如何透過兩種不同的語法以兩種方式使用 JavaScript 的 Math.min() 和 Math.max() 方法在 JavaScript 中查詢陣列中的最小/最大元素。

在本教程中,我們深入討論了兩種在 JavaScript 中查詢陣列中最小/最大元素的不同方法,併為每種方法提供了程式碼示例。

更新於: 2022-10-31

11K+ 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.