我似乎无法想出这个。
var arr = [2.62, 111.05, 1.05]
arr.sort();
这会返回[1.05,111.05,2.62],但我期待[1.05,2.62,111.05]。
如何实现这一目标?我已经阅读了一些关于编写自定义排序以分割“十进制”但没有取得任何成功的内容。
答案 0 :(得分:9)
默认情况下,按字母顺序排序。您需要将函数传递给sort
方法
arr.sort(function(a, b){return a-b;});
答案 1 :(得分:4)
sort
method默认情况下将项目作为字符串进行比较。您可以指定比较器函数以任何方式进行比较。这会将项目作为数字进行比较:
arr.sort(function(a, b){ return a - b; });
注意:Javascript中的所有数字都是双精度浮点数,即使它们恰好包含整数值,因此整数值和小数值的处理方式也不同。
答案 2 :(得分:2)
当Array.sort()
没有给出比较器功能时,这是正常行为。试试这个:
var arr = [2.62, 111.05, 1.05];
arr.sort(function(a,b) { return a-b; });
来自MDN:
如果未提供compareFunction,则通过将元素转换为字符串并按Unicode代码点顺序比较字符串来对元素进行排序。例如,“Cherry”出现在“banana”之前。在数字排序中,9出现在80之前,但由于数字被转换为字符串,因此“80”以Unicode顺序出现在“9”之前。