对于js数组排序sort参数得一些理解
开发过程中一直有使用到排序sort,但是一直都是直接复制的,虽然也有查找过相关资料,但是一直都还是一头雾水,理解不了。最近看了高级javascript,看到里面的定义,才恍然大悟
比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等
则返回 0,如果第一个参数应该位于第二个之后则返回一个正数
上面的这个定义就是很直白清楚了
其实因为互斥关系我们主要记住一个点就可以了:接收两个参数,如果想要第一个参数在前,我们就返回-1
划重点:两个参数,第一个参数在前返回-1
下面举例子:
let sortTest = [1,3,7,3,4,98]
let sortResult = sortTest.sort(compare)
//定义比较函数
function compare(a,b){
//这里有ab两个参数,a在前,b在后
//比如我们想要排降序,也就是大的在前面,根据上面的定义:前面的参数要在前面,返回-1,所以我们对比a和b,如果a>b,返回-1,让a排在前面
if(a>b){
return -1
}else if(a<b){
return 1
}else{
return 0
}
}
上面说明了降序排序,同理如果是升序:ab参数,因为我们要把大的排在后面,那么就是小的在前面,那么a<b 返回-1
总结出来就是我们主要关注那个要排在前面,小的还是大的,剩下的就是另外个情况
上面简化后就是我们平时看到的
function compare(a,b){
reuturn a - b
//这里我们根据定义:-1 的话a在b前面;这个-1也可以理解为小于0,其他的大于0或者等于0;
//因此,如果a-b 小于0,也即是a<b,那么a排在前面,也就是升序排列
}
排序的最重要概念 就是:两个参数对比,-1的话,第一个参数在前面