我正在尝试这个: -
[231, 907, 1246, 1203, 1305, 484, 709, 1220, 616, 1200].sort();
输出如下: -
[1200, 1203, 1220, 1246, 1305, 231, 484, 616, 709, 907]
其中我检查的第一个元素的数组typeof是数字。
任何想法为什么它不起作用?
答案 0 :(得分:5)
对
等数字使用回调
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>');
答案 1 :(得分:4)
从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
}
答案 2 :(得分:2)
这是因为.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