2011-11-08 71 views
2

有誰知道內置的JS函數array.sort()如何在內部運行?我的意思是它改變串號....等Javascript排序數組函數性能

var keys = new Array(); 
keys.sort(); 
+2

btw,'new Array'是邪惡的,使用'[]'字面語法代替。 – hugomg

+6

此算法已指定[此處](http://ecma262-5.com/ELS5_HTML.htm#Section_15.4.4.11)。除此之外,我不確定你還想知道什麼。 –

+0

要回答這個問題:否,'.sort'不會更改任何元素值,**除非您指定了修改輸入的函數。例如:'keys.sort(function(x,y){x.moo = 1337; y.cowsay =「bar」;})' –

回答

6

MDN docs for sort()

如果不提供的compareFunction,元素由字典轉換 他們字符串和比較字符串排序(「字典」 或「電話簿」,不是數字)的順序。例如,「80後」來 前「9」在字典順序,但在一個數字排序9自帶 前80

參考的this question答案爲正在使用什麼算法。

+0

+1。通過閱讀這些內容,我可以在一段時間後在生產中很難找到錯誤。太糟糕了,人們只能喜歡這個問題,而不是答案。 –