javascript的sort()函式用法詳解

admin發表於2017-03-20

此函式可以用來給陣列中的元素進行排序,下面就通過程式碼例項詳細介紹一下此函式的用法。

首先說明一點,此函式是對陣列本身的操作,不會產生一個副本,程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
var theArray=["螞蟻部落","青島市南區","科技技術"];
console.log(theArray.sort());
console.log(theArray);

以上程式碼的執行結果足以說明這一點,這裡就不多介紹了。

sort()函式的難點在於陣列排序的規則是怎樣的,下面對此分步做一下介紹:

一.函式不用引數的時候:

如果函式沒有引數的時候,比較的陣列元素的unicode字元編碼的大小,大的在後,小的在前,不過裡面還有一些小細節進行介紹。

先看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
var theArray=["c","a","d","m"];
console.log(theArray.sort());

以上程式碼實現了排序效果,按照unicode大小順序進行的,為了印證這一點,下面是陣列元素的unicode碼的大小:

[JavaScript] 純文字檢視 複製程式碼
var theArray=["c","a","d","m"];
for(var i=0;i<theArray.length;i++){
  console.log(theArray[i]+"的unicode值是:"+theArray.join("").charCodeAt(i));
}

如果陣列元素並不是單個字元,那它們是如何比較的呢,程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
var theArray=["xc","xa","d","m"];
console.log(theArray.sort());

如果是字串之間比較unicode編碼的時候,是首先比較它們的第一個字元,如果能夠比較出大小,則排序順序就此確定,但是如果像"xc"和"xa"第一個字元無法比較出大小,那麼再比較它們的第二個字元,如果比較出大小,則它們的順序就此確定,否則依次類推繼續比較。

二.帶有引數的時候:

不帶引數的時候是sort()函式預設的排序規則,但是有時候我們需要自定義排序規則,那麼就需要傳遞一個引數。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var theArray=[10,15,8,30,25];
function done(x,y){
  return x-y;
}
console.log(theArray.sort(done));

以上程式碼實現了自定義規則排序,可以將陣列中的元素由小到大進行排列。

sort()函式的引數是一個函式物件,此函式物件具有兩個引數,是陣列中的前後兩個元素。

下面介紹一下規則:

陣列中元素的順序排序取決於函式的返回值,原則如下:

0:元素不保持原來的順序不變。

大於零:元素交換兩者的順序。

小於零:元素不交換兩者的順序。

也就是返回值大於零的時候才會交換兩個元素的順序。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
var theArray=[10,15,8,30,25]; 
function sortFunction(a,b){
  return b-a;
}
console.log(theArray.sort(sortFunction));

以上程式碼可以實現數字從大到小進行排序。

相關文章