2011-08-29 30 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'是相等的。我无法找到反例的事实并不意味着您的方法将始终有效;) –