我已经在数字数组的Javascript中遇到了奇怪的排序结果。例如排序结果[1,2,10,20,100,200]:
> [1, 2, 10, 20, 100, 200].sort()
[ 1, 10, 100, 2, 20, 200 ]
为什么会这样呢?
似乎数组排序不能用于直接对数字数组进行排序?
从MDN文档中:
如果未提供compareFunction,则通过将元素转换为字符串并按字典顺序(“字典”或“电话簿”,而不是数字)顺序比较字符串来对元素进行排序。
(或参阅EMCAScript规范的相关部分,Felix Kling的技巧以获取参考资料)
如果要进行数字排序,请传递一个比较函数:
[1, 2, 10, 20, 100, 200].sort(function (a,b) { return a-b; });
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句