我无法理解一段代码
I can't understand a piece of code
我在理解一个简单的概念时遇到了困难。代码下面:
var arr = [1, 3, 7, 9, 12, 5, 4, 6];
var randomArr = Math.floor(Math.random()*arr.length);
console.clear();
console.log(randomArr);
我不明白的是,为什么Math.floor(Math.random()*arr.length)
每次返回一个随机数,而Math.floor(Math.random())
总是返回0
?从我的理解,Math.floor(Math.random())
将始终返回0
,因为他生成了0
和1
之间的值(1
不包括在内),所以Math.floor(Math.random()*arr.length)
不应该总是返回8
在我的情况下?
这是我目前不明白的地方,我找不到任何关于这件事的资料。
谢谢。
Math.floor()
返回小于或等于给定数字的最大整数。换句话说,它将一个数字四舍五入到最接近的整数。
在您的代码中,Math.random()*arr.length
可以返回一个实数,因为Math.random
可能返回。3,数组长度为8,因此,而不是随机数组元素为2.4,您将得到2,如果您想要能够选择数组元素的索引,这更有意义。如果Math.random()
返回0.5,那么您将得到一个整数,但在大多数情况下,您可能不会得到一个整数。
打破Math.floor(Math.random()*arr.length)
:
-
arr.length
is 8 -
Math.random()
返回从0到但不包括1的值。 -
Math.floor
将结果舍入8次Math.floor
down - 使用
.3
作为Math.random()
返回值的示例:
Math.floor( .3 * 8)
Math.floor(2.4)
2
因此,给定代码Math.floor(Math.random()*arr.length)
,您将最终得到一个从0到7的整数,其中任何一个都可以用来选择arr
数组中的项目,如arr[randomArr].
相关文章:
- 在经过一段时间或满足条件后运行代码
- 下面的一段代码在jquery中会做什么
- Javascript 使用单个函数从另一段代码中取消 POST
- 哪一段代码通常更容易被接受
- JQuery 将一段代码应用于多个元素
- 链接到同一页面上的一段代码
- 是否可以在JavaScript的执行堆栈末尾放置一段代码
- 如果没有jQuery,javascript如何检查多个ajax调用是否已经完成,一旦完成,就执行一段代码
- 在浏览器向服务器发送任何操作URI的请求之前执行一段代码
- 向机器人隐藏一段代码
- 在执行一段代码之前,必须加载两个ExtJS存储
- Node.js:确保一段代码一段接一段地执行
- Javascript跳过一段代码,但在使用调试器时可以正常工作
- 使用if语句关闭html中的一段代码
- 我无法理解一段代码
- 在一段代码中混合使用PHP、Javascript和Ajax
- 我无法让一段代码在jsfiddle之外工作
- 将一段代码从jQuery 1.3.2升级到最新版本
- 如何在$q.all返回之前运行最后一段代码
- 向网页添加一段代码:Chrome 扩展程序