2015-06-06 80 views
0

我在一本書上發現了這個。這裏沒有很好的解釋,特別是'vals.sort(比較)'部分。任何人都可以請解釋我嗎?這個JavaScript排序功能是如何工作的?

<script> 

function compare (value1, value2) { 
    if (value1 > value2) { 
     return 1; 
    } 
    else if (value2 > value1) { 
     return -1 
    } 
    else { 
     return 0; 
    } 
} 

var vals = [12,93,41,62,99] 
vals.sort(compare) 
document.write(vals) 
</script> 

回答

0
  1. sort()是用於根據條件句數組值進行排序的陣列的效用函數。
  2. 如果在不傳遞匿名函數或命名函數的情況下調用sort(),則默認情況下會根據每個字符的Unicode代碼點值對值進行排序。
  3. 在JavaScript中,你可以通過函數或者匿名(function(){...})或名稱,如:

    function myFunction(){}

    [].sort(myFunction);

  4. 注意,你只能傳遞函數,而不是像myFunction()因爲這將執行該功能並通過什麼返回(這不是我們想要的)

  5. 在回調函數傳遞到sort(),例如,compare(a,b),返回

    -1 - > a爲小於 b

    0 - >一個是等於至b

    1 - > a是greatar比b

+0

@Alex,謝謝!我一直在摔跤,讓'代碼'工作! :) – AmmarCSE

+0

感謝您的簡單解釋。 –

+0

@SajibDevnathAkash,歡迎光臨。請讓我知道你是否想讓我更詳細地解釋一下 – AmmarCSE

0

我們可以通過比較函數作爲排序方法的參數,或者將它內聯寫入。

<script> 
    var a = [30,2,1,9,15]; 
    a.sort(function(a,b) { return a-b; }); 
    document.write(a); 
</script> 

或者我們可以指定比較方法並在您的情況下明確調用它。

調用sort()方法時,它會比較兩個值。它將值發送到比較函數,並根據返回值(負值,零,正值)對值進行排序。