...
大前端

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
就说到这儿,只为了巩固一下知识点。

js table表格导出到excel 导出一个工作簿多个sheet 浅析MySQL中concat以及group_concat的使用
biu biu biu
yarn 设置淘宝镜像 yarn 错误There appears to be trouble with your network connection. Retrying... win11 安装限制去除 跳过TPM CPU检测 附软件 win11 桌面不满足要求水印去除 适用于跳过TPM CPU检测安装后的桌面水印 php正则获取网页中的json update批量修改 mysql update select 用法实例