Sta*_*lem 5 javascript arrays sorting coercion
我试图按降序排序生成10到1000之间的随机数组.
这是我写的代码:
function GenerateRandomArray(){
var array = [];
for (var i = 0; i < 10; i++) {
array[i] = Math.round(Math.random() * (1000 - 10 + 1) + 10);
}
return array.sort().reverse();
}
Run Code Online (Sandbox Code Playgroud)
在终端中运行时,我得到的结果如下:
新GenerateRandomArray()=> [924,804,79,788,585,451,267,217,153,135]
新GenerateRandomArray()=> [869,697,647,59,458,30,291,157,112,111]
新GenerateRandomArray()=> [999,98,872,823,705,418,404,306,259,20]
new GenerateRandomArray()=> [688,666,664,615,580,565,336,304,250,246]
new GenerateRandomArray()=> [912,906,759,690,673,481,429,355,19,103]
为什么有些数组格式正确,有些数组中间有一个非有序数字?
我测试过:
这不会改变奇怪的结果.
我错过了像JS强制性财产之类的东西吗?
谢谢 :)
小智 3
默认情况下,该sort函数按字母数字/字母顺序排序(即“字符串排序”)。对于字符串来说,“aaa”位于“b”之前,类似地“111”位于“2”之前。
要改为按数值排序,您可以提供自己的比较函数。
array.sort(function(a, b) {
return a - b;
});
Run Code Online (Sandbox Code Playgroud)