我有一个浮点数数组:
[ 82.11742562118049, 28.86823689842918, 49.61295450928224, 5.861613903793295 ]
在数组上运行sort()之后我得到了这个:
[ 28.86823689842918, 49.61295450928224, 5.861613903793295, 82.11742562118049 ]
请注意,对于JavaScript(Node),5.8 ...大于49.6 ...那是为什么?
如何正确排序这些数字?
答案 0 :(得分:39)
传递排序功能:
[….].sort(function(a,b) { return a - b;});
结果:
[5.861613903793295, 28.86823689842918, 49.61295450928224, 82.11742562118049]
如果未提供compareFunction,则会通过将元素转换为字符串并按字典(“词典”或“电话簿”,而不是数字)顺序比较字符串来对元素进行排序。
答案 1 :(得分:4)
内置的JS排序功能将所有内容视为字符串。尝试制作自己的:
var numbers = new Array ( 82.11742562118049, 28.86823689842918, 49.61295450928224, 5.861613903793295 );
function sortFloat(a,b) { return a - b; }
numbers.sort(sortFloat);