在JavaScript中,数组排序通常使用Array.prototype.sort()
方法。这个方法会按照指定的顺序对数组的元素进行排序,并返回排序后的数组。如果未指定比较函数,那么元素会被转换为字符串,并按照字符的Unicode码点顺序进行排序。
下面是一些使用sort()
方法的示例:
基本用法
let array = [5, 2, 9, 1, 5, 6]; |
|
array.sort(); |
|
console.log(array); // 输出可能是 [1, 2, 5, 5, 6, 9],注意sort()方法不保证排序的稳定性 |
由于sort()
默认将数组元素转换为字符串进行排序,因此上面的代码可能不会按照预期的数字大小顺序进行排序。为了得到正确的数字排序,你需要提供一个比较函数。
按照数字大小排序
let array = [5, 2, 9, 1, 5, 6]; |
|
array.sort((a, b) => a - b); |
|
console.log(array); // 输出 [1, 2, 5, 5, 6, 9] |
在上面的例子中,我们传递了一个比较函数给sort()
,该函数接收两个参数a
和b
,并返回它们的差。如果a
小于b
,则返回一个负数,如果a
等于b
,则返回0,如果a
大于b
,则返回一个正数。这样,sort()
就会按照数字大小进行排序。
按照降序排序
let array = [5, 2, 9, 1, 5, 6]; |
|
array.sort((a, b) => b - a); |
|
console.log(array); // 输出 [9, 6, 5, 5, 2, 1] |
如果你想要按照降序排序,只需将比较函数中的a
和b
交换位置即可。
按照字符串长度排序
et array = ['apple', 'banana', 'cherry', 'date']; |
|
array.sort((a, b) => a.length - b.length); |
|
console.log(array); // 输出 ['date', 'apple', 'cherry', 'banana'] |
在这个例子中,我们按照字符串的长度进行排序。
按照对象属性排序
let array = [ |
|
{ name: 'John', age: 23 }, |
|
{ name: 'Jane', age: 30 }, |
{ name: 'Doe', age: 20 } |
|
]; |
|
array.sort((a, b) => a.age - b.age); |
|
console.log(array); |
|
// 输出: |
// [ |
|
// { name: 'Doe', age: 20 }, |
|
// { name: 'John', age: 23 }, |
|
// { name: 'Jane', age: 30 } |
|
// ] |
在这个例子中,我们按照对象的age属性进行排序。
sort()方法还可以接受一个可选的比较函数参数,用于自定义排序规则。如果你不传递任何参数给sort(),那么元素会按照字符的Unicode码点顺序进行排序。
请注意,sort()方法会直接修改原数组,并返回排序后的数组。如果你不想修改原数组,可以先复制一份数组再进行排序。