我在chrome控制台中输入了以下代码。
var array = [25,7,8,41];
array.sort();
返回[25,41,7,8]
。发生了什么事?
答案 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>
答案 1 :(得分:1)
默认情况下,sort方法按字母顺序对元素进行排序。要以数字方式排序,只需添加一个处理数字排序的新方法(sortNumber,如下所示) -
function sortNumber(a,b) {
return a - b;
}
var Array = [25 , 7 , 8 , 41];
Array.sort(sortNumber);
答案 2 :(得分:1)
默认情况下,javascript中的所有内容都是对象,当您尝试排序时,它会尝试按字母顺序对其进行排序。 你必须编写自己的比较函数,以数字方式对它们进行排序 请检查以下代码段
var array = [25,7,8,41];
array.sort(sortCompare);
function sortCompare(a,b){
return a-b;
}
console.log(array);
&#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;
}