Javascript控制台返回不正确的排序数组

Javascript Console returns incorrect sorted array

本文关键字:排序 数组 不正确 控制台 返回 Javascript      更新时间:2023-09-26

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

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

返回[25,41,7,8]。这是怎么呢

sort()方法对数组中的元素进行排序。

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

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

这适用于字符串("Apple"在"Banana"之前)。然而,如果数字按字符串排序,"25"比"100"大,因为"2"大于"1"

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

如果你想纠正这一点,你可以写一个比较函数作为传递给sort方法的第一个参数。参考资料中列出了一个!

编辑:在这里张贴以备将来使用…

var points = [40, 100, 1, 5, 25, 10];
function myFunction() {
    points.sort(function(a, b){return a-b});
    console.log(points);
}
参考

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

 function sortNumber(a,b) {
        return a - b;
    }
    var Array = [25 , 7 , 8 , 41];
    Array.sort(sortNumber);
如何正确排序整数数组

javascript中的一切都是默认的对象,当你尝试排序时,它试图按字母顺序排序。你必须自己编写比较函数来对它们进行数值排序检查以下代码片段

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

Sort方法对数组中的项进行排序。Sort方法本身将项解释为字符串。因为"25"中的"2"比"7"中的"7"小,所以它返回25的索引在7之前。为了对数字按升序排序,user:

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

用MDN的数组对您所面临的问题的解决方案展开这里的其他答案。页面:

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

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