在JavaScript中,数组排序主要有两种主要方法:Array.prototype.sort()
和自定义排序函数。
Array.prototype.sort()
sort()
方法按照字符串Unicode码点顺序对数组元素进行排序,并返回数组。对于非字符串类型的数组元素,sort()
方法会先将它们转换为字符串,然后再进行排序。
基本用法:
javascript复制代码
let arr = [5, 2, 9, 1, 5, 6]; | |
arr.sort(); | |
console.log(arr); // 输出: [1, 2, 5, 5, 6, 9],因为元素被转换为字符串后再排序 |
但是,如果你希望按数字大小排序,你可以提供一个比较函数作为 sort()
的参数:
javascript复制代码
let arr = [5, 2, 9, 1, 5, 6]; | |
arr.sort(function(a, b) { | |
return a - b; // 升序排序 | |
}); | |
console.log(arr); // 输出: [1, 2, 5, 5, 6, 9] |
如果你希望降序排序,只需改变比较函数的返回值:
javascript复制代码
let arr = [5, 2, 9, 1, 5, 6]; | |
arr.sort(function(a, b) { | |
return b - a; // 降序排序 | |
}); | |
console.log(arr); // 输出: [9, 6, 5, 5, 2, 1] |
- 自定义排序函数
虽然 sort()
方法足以满足大多数排序需求,但你也可以编写自己的排序函数。这通常涉及到使用如冒泡排序、插入排序、选择排序、快速排序等算法。但请注意,对于大型数组,JavaScript内置的 sort()
方法(当使用正确的比较函数时)通常比简单的自定义排序算法更有效。
例如,一个简单的冒泡排序实现可能如下所示:
javascript复制代码
function bubbleSort(arr) { | |
let len = arr.length; | |
for (let i = 0; i < len - 1; i++) { | |
for (let j = 0; j < len - 1 - i; j++) { | |
if (arr[j] > arr[j + 1]) { // 相邻元素两两对比 | |
let temp = arr[j + 1]; // 元素交换 | |
arr[j + 1] = arr[j]; | |
arr[j] = temp; | |
} | |
} | |
} | |
return arr; | |
} | |
let arr = [5, 2, 9, 1, 5, 6]; | |
arr = bubbleSort(arr); | |
console.log(arr); // 输出: [1, 2, 5, 5, 6, 9] |
但请注意,对于大型数组,这种简单的冒泡排序实现可能不是最高效的。在实际应用中,你通常会使用更先进的排序算法,或者简单地使用JavaScript内置的 sort()
方法。