數組排序sort參數的理解

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章