本文只列举JavaScript中内置的一些排序元素的方法。常用的排序算法在后面会有提到。在本文就不列举了。
在本文例子中,我们需要用到的数组都为以下 numbers 数组,就不每个函数一一写出

1
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

reverse()方法

reverse() 方法用于颠倒数组中元素的顺序。
示例:
我们要把numbers内的元素顺序进行颠倒:

1
2
let reverseNumbers = numbers.reverse();
console.log(reverseNumbers) // [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

sort()方法

上面我们已经用reverse()方法把numbers数组颠倒元素顺序了,那我们再用sort试试:

1
console.log(numbers.sort()) // [1, 10, 2, 3, 4, 5, 6, 7, 8, 9]

结果输出[1, 10, 2, 3, 4, 5, 6, 7, 8, 9] 为何10又在2的前面呢?看起来不太对,是吧?这是因为sort方法在对数组做排序时,把元素默认当成字符进行相互比较。
我们来看一下语法:

1
arrayObject.sort(sortby)

参数

名称说明类型
sortby可选。规定排序顺序Function

注意:对数组的引用,数组在原数组上进行排序,不生成副本。
我们重新来试试:

1
2
let sortNumbers = numbers.sort((x,y) => x - y);
console.log(sortNumbers); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

当y大于x时,会返回负数,反之返回正数,如果相等就返回0 。sort()方法就根据返回值的情况对数组进行排序

对象类型进行排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const friends = [
{name: '张三', age: 15},
{name: '李四', age: 18},
{name: '王五', age: 17}
];
let myFriendsSortByAge = friends.sort((a,b) => {
if(a.age < b.age) return -1;
if(a.age > b.age) return 1;
return 0;
})
console.log(myFriendsSortByAge); /*
[
{ name: '张三', age: 15 },
{ name: '王五', age: 17 },
{ name: '李四', age: 18 }
]
*/