JavaScript 数组排序 sort
记一下js的排序函数
数组排序
sort() 方法以字母顺序对数组进行顺序排序:
var fruits = [3, 2, 1, 4];
// 对 fruits 中的元素进行顺序排序
fruits.sort();
结果: [1, 2, 3, 4]
reverse() 方法反转数组中的元素。
您可以使用它以降序对数组进行排序:
var fruits = [3, 2, 1, 4];
// 对 fruits 中的元素进行排序
fruits.reverse();
结果: [4, 1, 2, 3]
比值函数
比较函数的目的是定义另一种排序顺序。
比较函数应该返回一个负,零或正值,这取决于参数:
function(a, b){return a-b}
当 sort() 函数比较两个值时,会将值发送到比较函数,并根据所返回的值(负、零或正值)对这些值进行排序。
实例:
当比较 40 和 100 时,sort() 方法会调用比较函数 function(40,100)。
该函数计算 40-100,然后返回 -60(负值)。
排序函数将把 40 排序为比 100 更低的值。
看,乱了:
var points = [40, 100, 1, 5, 25, 10];
points.sort();
结果: [1, 10, 100, 25, 40, 5]
运用比值函数就可以轻松解决,
比值函数有两个参数 a,b
var points = [40, 100, 1, 5, 25, 10];
points.sort((a,b)=>{
return a-b;
});
结果: [1, 5, 10, 25, 40, 100]
来说一下这个比值函数的原理:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
我们来看看 a,b 参数的输出
var points = [40, 100, 1, 5, 25, 10];
points.sort((a,b)=>{
console.log(a,b)
return a-b
});
100 40
1 100
1 40
5 40
5 1
25 40
25 5
10 25
10 5
可以清楚的看到,是一种穷举的排序方式。
现在说说二维数组怎么排序了
二维数组排序
var arr = [{id:3},{id:1},{id:2},{id:4}]
arr.sort((a,b)=>{
return a.id - b.id
})
结果:
0: {id: 1}
1: {id: 2}
2: {id: 3}
3: {id: 4}
没错,二维数组也是用比较函数
要想倒叙排序那就把 ab 换一下,换成 b.id-a.id
就说到这儿,只为了巩固一下知识点。