很多人會用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);
控制台顯示內容:
紅色字體是我標記的,以便理解。
咱們看一下,一開始數組是[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()函數除了可以給數字排序外,還可用於字母、字符串排序,其實質是按照字符編碼的順序進行排序。用法可參見http://www.jb51.net/article/67458.htm。
以上就是sort()函數的具體比較方法,如有表述不正確之處,望大家賜教,謝謝!