sort()
默认根据编码顺序进行排序。(详细的排序方法网上有很多了,这里做个简单介绍)
sort()
可以传一个函数进行排序,返回正数
、负数
和0
;
-
如果
a-
b是负数
则a
在前面; -
如果
a-b
是相等
则字符串相同; -
如果
a-b
是正数
则b
在前面;
简单来说就是a到b为正序,b到a为降序,要怎么排序直接记住这个就够了
看一个例子:
function sortNumber(a,b){
return a - b
}
const arr = ['5','3','6','2','4']
arr.sort(sortNumber) //输出 ['2','3','4','5','6']
a-b就是从小到大正序,简单的数字排序,如果你遇到的是字母呢,或者是对象的属性
-
对象
其实a
和b
接收到的就是每个对比数组的item
,你当然可以直接拿属性去做比较。
function sortNumber(a,b){
return a.age - b.age
}
const arr = [{age:'5'},{age:'3'},{age:'6'},{age:'2'},{age:'4'}]
arr.sort(sortNumber) //输出 [{age:'2'},{age:'3'},{age:'4'},{age:'5'},{age:'6'}]
-
字母
字母的话不能直接进行+
和-
的比较排序。但是你已经知道了sort()
接收正数
、负数
和0
。你要什么排在前面就return
一个对应的值,这完全没问题。
对了,忘记说两个字符串的比较也是根据字符编码的顺序来进行比较的。我们可以这样
function sortNumber(a,b){
const aa = a.age;
const bb = b.age;
if(aa<bb){
return -1;
}else if(aa==bb){
return 0;
}else{
return 1;
}
}
const arr = [{age:'b'},{age:'d'},{age:'a'},{age:'e'},{age:'c'}]
arr.sort(sortNumber) //输出 [{age:'a'},{age:'b'},{age:'c'},{age:'d'},{age:'e'}]