如何在 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 代码单元的顺序比较字符串,这导致排序效率低下。这个问题已通过比较函数得到解决,该函数执行升序和降序排序。