可能重复:
排序不适用于整数?
如何在 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
可能重复:
排序不适用于整数?
如何在 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
默认情况下,JavaScript Array.sort()
函数在进行比较之前将数组元素转换为字符串。
您可以覆盖它:
x.sort(function(e1, e2) { return e1 - e2; });
(根据第一个元素是小于、等于还是大于第二个元素,传递的函数应该返回一个负数、零或正数。)
我从未见过这种语言奇怪方面的理由。
如果未提供 compareFunction,则通过将元素转换为字符串并按字典(“字典”或“电话簿”,而不是数字)顺序比较字符串来对元素进行排序。例如,“80”按字典顺序排在“9”之前,但在数字排序中,9 排在 80 之前。
所以你应该做类似的事情:
function compareNumbers(a, b)
{
return a - b;
}
var x = [40,100,1,5,25,10];
x.sort(compareNumbers);
var x = [40,100,1,5,25,10];
x.sort(function(a,b){return a-b});
它默认按字母顺序升序排序(对 1 个字符进行排序.. 1,1_,1_ , 2,4_ ,5),并提供比较函数更改该行为
更多信息可以在这里找到: http: //www.w3schools.com/jsref/jsref_sort.asp