我似乎无法弄清楚这一点。对十进制数和整数进行排序
var arr = [2.62, 111.05, 1.05]
arr.sort();
这将返回[1.05,111.05,2.62],但我期待[1.05,2.62,111.05]。
这是如何实现的?我读过一些关于编写自定义排序来拆分“小数”的方法,但没有设法取得任何成功。
我似乎无法弄清楚这一点。对十进制数和整数进行排序
var arr = [2.62, 111.05, 1.05]
arr.sort();
这将返回[1.05,111.05,2.62],但我期待[1.05,2.62,111.05]。
这是如何实现的?我读过一些关于编写自定义排序来拆分“小数”的方法,但没有设法取得任何成功。
默认排序按字母顺序排列。你需要一个函数传递给sort
方法
arr.sort(function(a, b){return a-b;});
这是Array.sort()
当它没有给出一个比较器功能的正常行为。试试这个:
var arr = [2.62, 111.05, 1.05];
arr.sort(function(a,b) { return a-b; });
从MDN:
如果不提供的compareFunction,元素由Unicode代码点顺序将它们转换为字符串和比较字符串排序。例如,“樱桃”出现在“香蕉”之前。在数字排序中,9在80之前,但由于数字被转换为字符串,“80”以Unicode顺序出现在“9”之前。
sort
method默认情况下将项目作为字符串进行比较。您可以指定一个比较器函数来按照您喜欢的方式进行比较。这将比较的项目,如号码:
arr.sort(function(a, b){ return a - b; });
注:在Javascript中所有数字的双精度浮点数,即使它们会包含一个整数值,所以整数值和十进制值不会区别对待。
不熟悉JavaScript,但排序看起来好像元素是字符串而不是浮动 – sashas 2015-02-10 21:41:25