JavaScript 如何对数字数组进行排序
JavaScript的Array.sort()方法用于原地排序数组元素并返回排序后的数组。这个方法将元素按字符串格式排序。对于字符串数组来说,这个方法可以很好地工作,但对于数字来说却不行。例如,如果数字按字符串排序,那么”75″将大于”200″。
示例: 在这个示例中,实现了Array sort()方法的使用。数组按字符串排序。
let arr = [12, 25, 31, 23, 75, 81, 100]
console.log(arr.sort())
输出:
// code shows this output
Wrong Output : [100, 12, 23, 25, 31, 75, 81]
// Correct Output
Correct Output : [12, 23, 25, 31, 75, 81, 100]
示例: 该示例将数组元素按照字符串格式进行排序。
// Declare and initialize original array
let marks = [12, 25, 31, 23, 75, 81, 100];
// Print Before Sorting Array
console.log("Original Array");
console.log(marks);
// Call sort function
marks.sort();
console.log("After Sorting in Ascending Order");
// Print Sorted Numeric Array
console.log(marks);
输出:
Original Array
12,25,31,23,75,81,100
After Sorting in Ascending Order
100,12,23,25,31,75,81
然后,如何对数字数组元素进行排序? 有两种方法可以按升序对数字数组进行排序。
- 使用比较函数
- 通过创建循环
方法1:使用比较函数
我们可以创建一个比较函数,该函数返回负值、零或正值。
语法:
function(a, b){return a - b}
- 负值
(a < b) => a
将在b之前放置 - 零值
(a == b) =>
无更改 - 正值
(a > b) => a
将在b之后放置
示例: 这个示例使用比较函数按升序对数组元素进行排序。
// Declare and initialize an Array
let marks = [12, 25, 31, 23, 75, 81, 100];
// Print Before sorting array
console.log("Original Array");
console.log(marks);
// Sort elements using compare method
marks.sort(function (a, b) { return a - b });
console.log("After sorting in Ascending order");
// Print sorted Numeric array
console.log(marks);
输出
Original Array
[
12, 25, 31, 23,
75, 81, 100
]
After sorting in Ascending order
[
12, 23, 25, 31,
75, 81, 100
]
现在,我们想要按降序对数组进行排序,这样我们就需要改变比较函数。
语法:
function(a, b){return b - a}
- 负值
( b < a) => a
在 b 之后 - 零值
(a == b) =>
无变化 - 正值
(b > a ) => a
在 b 之前
示例: 这个示例使用比较函数将数组元素按降序排序。
// Declare and initialize an Array
let marks = [12, 25, 31, 23, 75, 81, 100];
// Print Before sorting array
console.log("Original Array");
console.log(marks);
// Sort elements using compare method
marks.sort(function (a, b) { return b - a });
console.log("After sorting in Ascending order");
// Print sorted Numeric array
console.log(marks);
输出
Original Array
[
12, 25, 31, 23,
75, 81, 100
]
After sorting in Ascending order
[
100, 81, 75, 31,
25, 23, 12
]
方法2:使用循环进行排序
我们也可以使用循环来对数组元素进行排序。在这里,我们将使用冒泡排序(一种简单的排序技术)以升序对数组元素进行排序。
示例:
// Sorting function
function Numeric_sort(ar) {
let i = 0, j;
while (i < ar.length) {
j = i + 1;
while (j < ar.length) {
if (ar[j] < ar[i]) {
let temp = ar[i];
ar[i] = ar[j];
ar[j] = temp;
}
j++;
}
i++;
}
}
// Original Array
let arr = [1, 15, 10, 45, 27, 100];
// Print Before sorting array
console.log("Original Array");
console.log(arr);
// Function call
Numeric_sort(arr);
console.log("Sorted Array");
// Print sorted Numeric array
console.log(arr);
输出:
Original Array
1,15,10,45,27,100
Sorted Array
1,10,15,27,45,100