可能重复:
sort not working with integers?
How to sort number in javascript sort method
Array.sort() doesn't sort numbers correctly
代码:
var x = [40,100,1,5,25,10];
x.sort();
输出:
1,10,100,25,40,5
我的预期输出:
1,5,10,25,40,100
答案 0 :(得分:6)
JavaScript Array .sort()
函数默认情况下会在进行比较之前将数组元素转换为字符串。
您可以覆盖:
x.sort(function(e1, e2) { return e1 - e2; });
(传递的函数应返回一个负数,零或正数,根据第一个元素是否小于,等于或大于第二个元素。)
我从来没有见过这种奇怪方面的理由。
答案 1 :(得分:4)
如果未提供compareFunction,则通过将元素转换为字符串并按字典(“词典”或“电话簿”,而不是数字)顺序比较字符串来对元素进行排序。例如,“80”以字典顺序排在“9”之前,但在数字排序中,9位于80之前。
所以你应该这样做:
function compareNumbers(a, b)
{
return a - b;
}
var x = [40,100,1,5,25,10];
x.sort(compareNumbers);
答案 2 :(得分:3)
var x = [40,100,1,5,25,10];
x.sort(function(a,b){return a-b});
答案 3 :(得分:1)
它按字母顺序排序,升序排序(1个字符排序为.. 1,1_,1_ ,2 ,4_,5)作为默认值并提供比较函数更改该行为
可以在此处找到更多信息:http://www.w3schools.com/jsref/jsref_sort.asp