我的印象是,为了对一系列数字进行排序,您必须执行以下操作:
var numbers = [4, 1, 2, 3];
function compare(a, b) {
return a - b;
}
numbers.sort(compare);
然而,我发现以下似乎有效:
var numbers = [5, 3, 2, 6, 4, 7];
var sortNumbers = numbers.sort();
console.log(sortNumbers);
这样做有什么不对吗?它似乎适用于所有情况。
答案 0 :(得分:2)
它似乎适用于所有情况。
您尚未考虑任何数字字符串表示中包含多个数字的情况。 字典默认比较也因负数而失败。
有关详细信息和一些反例,请参阅How to sort an array of integers correctly。
答案 1 :(得分:0)
这里有一个默认的排序功能:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
默认排序顺序是根据字符串Unicode代码点。
var scores = [1, 10, 2, 21];
scores.sort(); // [1, 10, 2, 21]
// Watch out that 10 comes before 2,
// because '10' comes before '2' in Unicode code point order.
所以是的,它不会像你一样对数字进行排序。它会将它们排序为字符串。
为方便使用,您可以内联排序功能:
numbers.sort(function(a,b){return a - b});