【发布时间】:2016-08-13 05:11:00
【问题描述】:
我试图按降序生成 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();
}
在终端中运行时,我得到的结果如下:
新的 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 ]
新的 GenerateRandomArray() => [688、666、664、615、580、565、336、304、250、246]
新的 GenerateRandomArray() => [912、906、759、690、673、481、429、355、19、103]
为什么有些数组格式正确,而有些数组中间有一个无序数?
我测试过:
- 将数字转换为字符串
- 访问数组中的无序元素(它给出相同的数字 - 显然)
- 使用函数而不是构造函数来实现
这不会改变奇怪的结果。
我是否缺少诸如 JS 强制属性之类的东西?
谢谢:)
【问题讨论】:
-
.sort()将传递的参数视为字符串,数组排序为值将是字符串而不是数字 - 根据 JS 规范 -
感谢现在可以使用 :)
标签: javascript arrays sorting coercion