2016-11-20 86 views
-1

這段代碼必須有一些非常簡單的錯誤,但它不會排序。這是爲什麼?javascript排序整數失敗

$(document).ready(function() { 
      var topArray = []; 
      topArray.push(1000); 
      topArray.push(298); 
      topArray.push(2000); 
     topArray.sort(); 
      alert(topArray[0] + "," + topArray[1] + ", " + topArray[2]); 
     }) 

回答

0

附加排序選項吧,在這裏要注意: http://www.w3schools.com/jsref/jsref_sort.asp

$(document).ready(function() { 
     var topArray = []; 
     topArray.push(1000); 
     topArray.push(298); 
     topArray.push(2000); 
    topArray.sort((function(a, b){return a-b})); 
     alert(topArray[0] + "," + topArray[1] + ", " + topArray[2]); 
    }) 
0

您需要按數字排序數字,而不是字符串,這是默認排序。

Description

如果未提供compareFunction,元件由在統一代碼點以便將它們轉換爲字符串,並比較字符串排序。例如,「香蕉」出現在「櫻桃」之前。在數字排序中,9在80之前,但由於數字被轉換爲字符串,「80」以Unicode順序出現在「9」之前。

topArray.sort(function (a, b) { 
    return a - b; 
}); 
0

在基於字符串的比較,而不是默認Array#sort方法各種各樣,實現自定義排序功能。

topArray.sort(function(a, b){ return a - b; }); 


MDN docs

如果的compareFunction不被供應,元件由在統一代碼點以便將它們轉換爲字符串,並比較字符串排序。例如,「香蕉」出現在「櫻桃」之前。 在數字排序中,9在80之前,但由於數字被轉換爲字符串,「80」以Unicode順序排在「9」之前