Javascript控制台返回错误的排序数组

时间:2016-10-13 19:15:34

标签: javascript arrays sorting

我在chrome控制台中输入了以下代码。

var array = [25,7,8,41];
array.sort();

返回[25,41,7,8]。发生了什么事?

5 个答案:

答案 0 :(得分:6)

  

sort()方法对数组的项进行排序。

     

排序顺序可以是字母或数字,也可以是   上升(上升)或下降(下降)。

     

默认情况下,sort()方法将值排序为字符串   按字母顺序排列。

     

这适用于字符串(“Apple”出现在“Banana”之前)。然而,   如果数字被排序为字符串,“25”大于“100”,因为   “2”大于“1”。

     

因此,sort()方法将产生不正确的结果   在排序数字时。

如果您希望更正此问题,可以将比较函数编写为传递给sort方法的第一个参数。参考文献中列出了一个!

编辑:在此处发布以备未来案例......

<div class="col-xs-4 col-md-4" style="background-color:lavender;">.col-sm-4</div>

Reference

答案 1 :(得分:1)

默认情况下,sort方法按字母顺序对元素进行排序。要以数字方式排序,只需添加一个处理数字排序的新方法(sortNumber,如下所示) -

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

    var Array = [25 , 7 , 8 , 41];
    Array.sort(sortNumber);

来源How to sort an array of integers correctly

答案 2 :(得分:1)

默认情况下,javascript中的所有内容都是对象,当您尝试排序时,它会尝试按字母顺序对其进行排序。 你必须编写自己的比较函数,以数字方式对它们进行排序 请检查以下代码段

&#13;
&#13;
var array = [25,7,8,41];
array.sort(sortCompare);
function sortCompare(a,b){
  return a-b;
}
console.log(array);
&#13;
&#13;
&#13;

答案 3 :(得分:1)

Sort方法对数组中的项进行排序。 Sort方法本身将项解释为字符串。 自&#34; 2&#34;在&#34; 25&#34;是一个低于&#34; 7&#34;在&#34; 7&#34;中,它返回25例如在7之前被索引。为了按升序用户对数字进行排序:

var array = [25,7,8,41];
array.sort(function(a, b){return a-b});

同时检查this example

答案 4 :(得分:0)

在此处扩展其他答案并解决您所面临的问题 - 来自MDN's array.sort page

  

要比较数字而不是字符串,比较函数可以简单地从a中减去b。以下函数将对数组进行升序排序(如果它不包含Infinity和NaN):

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