如何在 JavaScript 中執行數值排序?


在本教程中,我們將學習如何在 JavaScript 中執行數值排序。

我們可以透過數值排序將給定的數值按升序或降序排列。

在 JavaScript 中,我們使用 `sort()` 方法對數值進行排序。此方法可對數字、字串和物件的陣列進行排序。它對陣列的元素進行排序,並更改原始陣列元素的順序。

陣列元素被轉換為字串以確定順序,然後進行比較和排序。

arr.sort()

其中 `arr` 是需要排序的數值元素陣列,此方法返回一個升序排序的陣列,數值最小的元素排在最前面,數值最大的元素排在最後面。

示例 1

不使用比較函式的 `sort()` 方法

在給定的示例中,我們將看到使用 `sort()` 方法進行數值排序。我們不使用任何比較函式。

<html> <body> <div id = "str1" > </div> <script> let my_array = [61,34,54,2,12,67,89,97,39, 87,40]; let sort_array = my_array.sort(); var output = document.getElementById("str1"); output.innerHTML += "Original Array: "+ my_array+"<br>"; output.innerHTML += "Sorted Array: " + sort_array; </script> </body> </html>

使用帶比較函式的 `sort()`

當我們不使用比較函式使用 `sort()` 時,我們可能無法獲得準確的值。例如,在上面的示例中,`sort()` 方法返回 "12" 在 "2" 之前,因為數字在 Unicode 順序中被轉換為字串後再進行比較。為了解決這個問題,我們建立了一個比較函式,該函式返回正值、零值和負值。比較函式允許我們有效地執行升序和降序排序。

當向 `sort()` 方法提供比較函式時,所有非未定義的陣列元素都將使用定義的排序順序進行排序。

`sort()` 方法根據提供的比較函式返回升序或降序排序的陣列。例如:

  • 如果為負值 (a > b),則 a 位於 b 之前

  • 如果為零值 (a == b),則陣列沒有變化

  • 如果為正值 (a < b),則 a 位於 b 之後

語法

要使用比較函式實現 `sort()` 方法,請遵循以下語法:

arr.sort(function(a, b){return a - b})

其中 `arr` 是要排序的陣列,比較函式定義排序順序。

引數

  • 比較函式接受兩個引數 a 和 b。

示例 2

按升序排序元素

在下面的示例中,我們使用 `sort()` 方法以及比較函式執行數值排序。

<html> <body> <h3> The sort() method with compare function</i> </h3> <div id="str2"> </div> <script> let my_array = [61,34,54,2,12,67,89,97,39, 87,40]; var output = document.getElementById("str2"); output.innerHTML += "Original Array : "+ my_array+"<br>"; let sort_array = my_array.sort(function(a, b){return a - b}); output.innerHTML += "Sorted Array : "+ sort_array; </script> </body> </html>

陣列按升序排序,從最小的 2 開始到最大的 97。

示例 3

按降序排序元素。

在給定的示例中,我們將使用 `sort(function(a, b){return b - a});` 來輸出降序。

<html> <body> <div id="str1"> </div> <script> let my_array = [61,34,54,2,12,67,89,97,39, 87,40]; var output = document.getElementById("str1"); output.innerHTML += "Original Array: " + my_array+ "<br>"; let sort_array = my_array.sort(function(a, b){return b - a}); output.innerHTML += "Sorted Array: " + sort_array; </script> </body> </html>

陣列按降序排序,從最大的 97 開始到最小的 2。

在本課中,您學習瞭如何在 JavaScript 中進行數值排序。首先,我們使用 `sort()` 函式對數字元件進行排序。但是,這種方法涉及將陣列元素轉換為字串,然後按 URF-16 程式碼單元的順序比較字串,這導致排序效率低下。這個問題已透過比較函式得到解決,該函式執行升序和降序排序。

更新於:2022年9月14日

12K+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.