数组排序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的话,第一个参数在前面

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