数组排序是错误的

时间:2016-03-05 11:24:12

标签: javascript

今天我发现了有关数组原型sort的一些有趣内容。

var numbers = [1,7,23,11,50,60];

所以我创建了一个数字数组,并希望对它们进行排序。所以我用了

console.log(numbers.sort()) //-> [1, 11, 23, 50, 60, 7]

结果很奇怪,[1, 11, 23, 50, 60, 7]。 sort函数有什么问题?



var numbers = [1,7,23,11,50,60];
alert(numbers.sort())




2 个答案:

答案 0 :(得分:2)

sort()将在所有成员上调用toString(),因此它们会转换为字符串,并且您的排序顺序错误。

您必须手动传递比较器。

function comparator(x,y) {
    return x - y;
}

numbers.sort(comparator);

答案 1 :(得分:1)

如果你想按整数排序,就这样做吧。普通排序的比较函数将整数转换为字符串,然后比较它们。

function sortNumber(a,b) {
   return a - b;
}

var numArray = [1,7,23,11,50,60];
numArray.sort(sortNumber);

输出

[1, 7, 11, 23, 50, 60]