JavaScript排序数字不按预期工作

时间:2018-03-12 07:11:44

标签: javascript

我们正在浏览Array.prototype.sort() MDN文档,在那里我们看到了一个示例:

var array1 = [1, 2,3,4,5,6,7,8,9,10];
array1.sort();
console.log(array1);

所以预期的输出是

[1, 2, 3 , 4, 5, 6, 7, 8, 9, 10] 

但我们得到了这个

[1, 10, 2, 3, 4, 5, 6, 7, 8, 9]

为什么不像我们预期的那样排序?

5 个答案:

答案 0 :(得分:0)

您需要使用排序功能。默认情况下,sort使用字母排序而不是数字。

array1.sort(function (a,b) {
    return a - b; // Ascending
});

array1.sort(function (a,b) {
    return b - a; // Descending
});

答案 1 :(得分:0)

来自This post的引用



var numArray = [1, 2,3,4,5,6,7,8,9,10];
for (var i = 0; i < numArray.length; i++) {
    var target = numArray[i];
    for (var j = i - 1; j >= 0 && (numArray[j] > target); j--) {
        numArray[j+1] = numArray[j];
    }
    numArray[j+1] = target
}
console.log(numArray);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

    function sorter(a, b) {
      if (a < b) return -1;  // any negative number works
      if (a > b) return 1;   // any positive number works
      return 0; // equal values MUST yield zero
    }

   [1, 2,3,4,5,6,7,8,9,10].sort(sorter);

答案 3 :(得分:0)

请使用以下代码:

var array1 = [1, 2,3,4,5,6,7,8,9,10];
array1.sort(function(a,b){
    return parseInt(a) > parseInt(b);
    }
  );
console.log(array1);

答案 4 :(得分:0)

您可以将函数传递给sort方法,For Asc sort:

array1.sort(function(a,b){return a>b?1:b>a?-1});