7

可能重复:
排序不适用于整数?
如何在 javascript 排序方法中对数字进行排序
Array.sort() 不能正确排序数字

代码:

var x = [40,100,1,5,25,10];
x.sort();

输出:

1,10,100,25,40,5

我的预期输出:

1,5,10,25,40,100
4

4 回答 4

6

默认情况下,JavaScript Array.sort()函数在进行比较之前将数组元素转换为字符串。

您可以覆盖它:

x.sort(function(e1, e2) { return e1 - e2; });

(根据第一个元素是小于、等于还是大于第二个元素,传递的函数应该返回一个负数、零或正数。)

我从未见过这种语言奇怪方面的理由。

于 2012-08-11T12:26:06.217 回答
4

根据MDN Array.sort

如果未提供 compareFunction,则通过将元素转换为字符串并按字典(“字典”或“电话簿”,而不是数字)顺序比较字符串来对元素进行排序。例如,“80”按字典顺序排在“9”之前,但在数字排序中,9 排在 80 之前。

所以你应该做类似的事情:

function compareNumbers(a, b)
{
  return a - b;
}
var x = [40,100,1,5,25,10];
x.sort(compareNumbers);
于 2012-08-11T12:30:43.343 回答
3
var x = [40,100,1,5,25,10];
x.sort(function(a,b){return a-b});
于 2012-08-11T12:26:35.317 回答
1

它默认按字母顺序升序排序(对 1 个字符进行排序.. 1,1_,1_ , 2,4_ ,5),并提供比较函数更改该行为

更多信息可以在这里找到: http: //www.w3schools.com/jsref/jsref_sort.asp

于 2012-08-11T12:33:35.963 回答