对十进制和&数组进行排序整数

时间:2015-02-10 21:38:59

标签: javascript arrays sorting decimal

我似乎无法想出这个。

var arr = [2.62, 111.05, 1.05]
arr.sort(); 

这会返回[1.05,111.05,2.62],但我期待[1.05,2.62,111.05]。

如何实现这一目标?我已经阅读了一些关于编写自定义排序以分割“十进制”但没有取得任何成功的内容。

3 个答案:

答案 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”之前。