對於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的話,第一個參數在前面