sort和reverse方法在JavaScript中无法正常工作

sort and reverse method not working properly in JavaScript

本文关键字:常工作 工作 reverse 方法 JavaScript sort      更新时间:2023-09-26

我正在尝试这个:-

[231, 907, 1246, 1203, 1305, 484, 709, 1220, 616, 1200].sort();

输出是这样的:-

[1200, 1203, 1220, 1246, 1305, 231, 484, 616, 709, 907]

其中数组的类型我检查的第一个元素是数字。

知道为什么不起作用吗?

对等数字使用回调

function numSortDesc(a, b) {
    return b - a;
}
var data = [231, 907, 1246, 1203, 1305, 484, 709, 1220, 616, 1200];
data.sort(numSortDesc);
document.write('<pre>' + JSON.stringify(data, 0, 4) + '</pre>');

从MDN来看,在Array上排序的典型继承方法是:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

sort()方法对数组中的元素进行适当的排序并返回数组。排序不一定稳定。默认的排序顺序是根据字符串Unicode代码点

所以排序是正确的,并且您省略了比较器功能。添加一个比较器函数,根据您想要的进行排序(在这种情况下,任何数字升序或降序的匿名回调函数都可以,即:)

function(a, b) {
   if (a == b) {
       return 0;
   }
   return (a > b) ? 1 : -1; //Depending on your desired sort order
}
这是因为.sort()将按字母顺序排列。如果你想按数值排序,你需要指定排序时间如下:

document.write([231, 907, 1246, 1203, 1305, 484, 709, 1220, 616, 1200].sort((a,b) => b-a));

b - a将按降序排列阵列,a - b按升序排列

来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort