天天看點

sort()函數到底是怎樣進行數字排序的

很多人會用sort(),并不見得知道它具體是怎樣給數字排序的。其實不知道也行,會用就可以,感興趣的可以來看看。

1  var numberArray = [2,4,1,3];
2  numberArray.sort(function(a,b){  
3     return a-b; //從小到大
4  })      

用過sort()函數的都知道上面代碼其實就是将數組裡的元素從小到大排序,傳回結果[1,2,3,4]。

為了弄清楚sort()是怎樣進行數字比較和移動,最後排好序的,我加三行代碼,讓它把每一次比較的結果,以及a和b的值都顯示在控制台上。

1 var numberArray = [2,4,1,3];
 2 
 3 res=numberArray.sort(function(a,b){  
 4    console.log(numberArray);
 5    console.log(a); 
 6    console.log(b);
 7    return a-b; 
 8    
 9 })
10 console.log(res);      

控制台顯示内容:

sort()函數到底是怎樣進行數字排序的

紅色字型是我标記的,以便了解。

咱們看一下,一開始數組是[2,4,1,3],從小到大排序是從左邊開始兩兩比較,首先2和4比較,2<4,倆數字位置不變;繼續向右走,4和1比較,4>1,将4放在原來1的位置上;那麼一開始比4小的2與1的大小關系呢,這會兒再進行比較,2>1,那就1在前,2在後;以此類推。

如果是sort()函數從大到小排序,則是從左向右兩兩進行比較,大的放在左邊。下面來看一下代碼和控制台顯示:

1 var numberArray = [2,4,1,3];
 2 
 3 res=numberArray.sort(function(a,b){  
 4    console.log(numberArray);
 5    console.log(a); 
 6    console.log(b);
 7    return b-a; //從大到小
 8    
 9 })
10 console.log(res);      
sort()函數到底是怎樣進行數字排序的

sort()函數除了可以給數字排序外,還可用于字母、字元串排序,其實質是按照字元編碼的順序進行排序。用法可參見http://www.jb51.net/article/67458.htm。

以上就是sort()函數的具體比較方法,如有表述不正确之處,望大家賜教,謝謝!

轉載于:https://www.cnblogs.com/realcare/p/6032721.html