不指定比较函数
默认根据数据项 UTF-16 编码升序比较 - The default sort order is ascending
const arr = [1,45,6,2,4,5]
//升序
arr.sort(); //[1, 2, 4, 45, 5, 6]
//降序
arr.sort().reverse(); //[6, 5, 45, 4, 2, 1]
const arr = ['banana', 'apple', 'cherry'];
arr.sort(); // ['apple', 'banana', 'cherry']
指定比较函数 - 按照参数进行排序
1. 数值型
. 简单数组
arr = [1,45,6,2,4,5]
//升序
arr.sort((a, b) => a - b); //[1, 2, 4, 5, 6, 45]
//降序
arr.sort((a, b) => b - a); //[45, 6, 5, 4, 2, 1]
. 对象数组 - 按年纪 age 排序
//升序
obj.sort((a, b) => a['age'] - b['age']);
//降序
obj.sort((a, b) => b['age'] - a['age']);
. 封装函数使用 - 根据 key 排序
const sortUp = (key) => {
arr.sort((a, b) => {
return a[key] - b[key]
})
}
const sortDown = (key) => {
arr.sort((a, b) => {
return b[key] - a[key]
})
}
为什么连续测试结果相等?
2. 字符数组排序
. 如果需要根据字符排序,需要使用比较函数 localeCompare()
. 按字符升序排序
obj.sort((a, b) => {
return a.name.localeCompare(b.name)
})
. 按字符降序排序
obj.sort((a, b) => {
return b.name.localeCompare(a.name)
})