2011-08-29 88 views

回答

6

如果不提供的compareFunction,元素進行排序通過將它們轉換爲字符串並按詞典(「字典」或「電話簿」,而非數字)順序比較字符串。例如,「80後」來之前,「9」,在字典順序,但在一個數字排序前9 80.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/sort

因此,答案是假來。

+3

嗯,要迂腐,它仍然排序數字數據。只是不以「預期」的方式。 –

+2

我無法與此爭論。 – erikvold

0

看來它沒有那種非常好...

[3,5,1,5,10,0,99,10,12].sort() 
[0, 1, 10, 10, 12, 3, 5, 5, 99] // result 

但是你可以很容易地使排序確定:

[3,5,1,5,10,0,99,10,12].sort(function(a,b) {return parseInt(a) > parseInt(b)}) 
[0, 1, 3, 5, 5, 10, 10, 12, 99] // result 
+2

比較函數應該返回'-1','0'或'1'。 –

+0

是否有我的函數產生不正確結果的情況? – WTK

+0

我認爲這取決於算法如何處理相同的值。但是當'a'更小時,你的函數基本上會返回'0',這意味着'a'和'b'是相等的。我無法找到反例的事實並不意味着您的方法將始終有效;) –