只有需要,才会研究
之前对于sort排序的了解,不能说是一窍不通,但也差不多是一知半解。
现有需求需要进行排序操作,索性细细研究并加以记录,以便后续翻阅查找。
之前遇到的排序需求很简单,对一个数值型数组进行排序,So easy~。
sort
语法格式为:
Array.prototype.sort( compareFunction )
compareFunction( first, second )
其比较函数包含有两个将要被比较的元素:
first
: 第一个用于比较的元素second
: 第二个用于比较的元素- 两者相比较,决定排序方式
如果 first - second 小于 0 ,那么 first 会被排列到 second
之前;
如果 first - second 等于 0 ,那么 first 与 second
位置不变;
如果 first - second 大于 0 ,那么 second 会被排列到 first
之前;
上述是改编于 【MDN讲解sort】
eg 1:
let list = [1,3,5,7,9,2,4,6,8,0]
// 升序排序
list.sort( (a, b)=> a - b )
console.log(list) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
// 降序排序
list.sort( (a, b)=> b - a )
console.log(list) // [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
eg 2:
let objArr = [{ id:1, name:'小李', age:30}, { id:2, name:'小闫', age:10}, {id:3, name:'小小李', age:18}, {id:4, name:'小小闫', age:16}]
// 升序排序
objArr.sort( (a, b)=> a.age - b.age )
let objArr = [{ id:1, name:'小李', age:30}, { id:2, name:'小闫', age:10}, {id:3, name:'小小李', age:18}, {id:4, name:'小小闫', age:16}]
// 降序排序
objArr.sort( (a, b)=> b.age - a.age )