对数组排序
['2-3','2-1','1-4','3-2','1-1','2-2','3-1']
直接使用原生sort
对对象排序
[{a:'2-3'},{a:'2-1'},{a:'1-4'},{a:'3-2'},{a:'1-1'},{a:'2-2'},{a:'3-1'}]
直接使用原生sort
无效
理解sort
方法,巧妙自定义
sort使用方法:
arr.sort();//默认排序
arr.sort(comparefn(a,b));//自定义排序比较方法
当没有参数传入的时候,其排序顺序默认为,将待排序数据转换为字符串,并按照Unicode序列排序;当然,比较函数可以自定义,自定义排序函数需要返回值,其返回值为-1,0,1,分别表示a<b, a=b, a>b.
当数组长度小于等于10的时候,采用插入排序,大于10的时候,采用快排。
对于字符串的自定义sort排序
[{a:'2-3'},{a:'2-1'},{a:'1-4'},{a:'3-2'},{a:'1-1'},{a:'2-2'},{a:'3-1'}].sort((a,b)=>+(a.a>b.a)-1)
sort自定义方法接受返回值为number
类型
优先判断两个值的大小,使用>
得出boolean
再转成number
--- 0,1
a>b -> 1
a<=b -> 0
当返回值为0时,sort解析为a=b
那么将所得值-1
,即可对应sort对返回值的解析
不用理会1-1=0
的情况,有-1
了就会有排序,为0
时不动位置即可