首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript:为什么我在使用数组中的随机数时得到一个未定义的值?

JavaScript:为什么我在使用数组中的随机数时得到一个未定义的值?
EN

Stack Overflow用户
提问于 2017-10-31 01:04:43
回答 1查看 1.9K关注 0票数 3

我使用Javascript从类中设置元素的背景图像。这些代码大部分都能工作,但是在运行代码时,我会得到一个未定义的变量。我使用Math.Random()来获取变量的数字。我的代码中的问题点(或者至少我认为是这样):

代码语言:javascript
复制
var RandomContentDiv = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 
var cd = RandomContentDiv[Math.round(Math.random()*RandomContentDiv.length-1)];
console.log(cd);

我使用console.log(cd);来查看输出的数字。我得到了结果,但是结果对解决这个问题没有用。我将测试运行代码2次,以向您展示我通常会得到什么。

测试1:

代码语言:javascript
复制
Number: 5
Number: 13
Number: 10
Number: 1
Number: 10
Number: 6
Number: 10
Number: 3
Number: 2
Number: 15
Number: 2
Number: 3
Number: 8
Number: 15
Number: 12
Number: 7
Number: 9
Number: 2
Number: 0
Number: 8
Number: 10
Number: 3
Number: 14
Number: 13
Number: 9
Number: 1
Number: 15
Number: 13
Number: 3
Number: 2
Number: 4
Number: 14
Number: 11
Number: 0
Number: 15
Number: 7
Number: 6
Number: 1
Number: 4
Number: 7
Number: 8
Number: 6
Number: 7
Number: 4
Number: 10
Number: 0
Number: 12
Number: 11
Number: 2
Number: 7
Number: 2
Number: 11
Number: 13
Number: 6
Number: 0
Number: 5
Number: 1
Number: 2
Number: 7
Number: 8
Number: 2
Number: 13
Number: 4
Number: 3
Number: 7
Number: 15
Number: 5
Number: 1
Number: 0
Number: 2
Number: 11
Number: 8
Number: 10
Number: 12
Number: 11
Number: 1
Number: 12
Number: 11
Number: 12
Number: 0
Number: 6
Number: 8
Number: 1
Number: 11
Number: 1
Number: 12
Number: undefined

测试2:

代码语言:javascript
复制
Number: 13
Number: 2
Number: 9
Number: 0
Number: 2
Number: 0
Number: 11
Number: 3
Number: 5
Number: 3
Number: 11
Number: 3
Number: 14
Number: 15
Number: 9
Number: 8
Number: 11
Number: 12
Number: 10
Number: 3
Number: 9
Number: 0
Number: undefined

我认为问题来自于这样的说法:RandomContentDiv[Math.round(Math.random()*RandomContentDiv.length-1)];,但我不知道如何解决它,因为我还没有深入研究Math for JavaScript。我只知道有人说了一些关于Math.Round的东西,当四舍五入时给你一个不准确的数字(即1.5可以整到1),但我认为它不适用于此。有人能告诉我,是这句话引起了问题还是别的什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-31 01:12:32

这是计算RandomContentDiv数组索引的方法。

在您的代码中,您将得到控制台中未定义的号码.

cd = RandomContentDiv[Math.round(Math.random()*RandomContentDiv.length-1)];

有时,Math.random()给出的数字非常小,接近于零,这就意味着您试图访问RandomContentDiv-1,这是未定义的。

看看getRandomInt函数在Objects/Math/random上的例子。这是一个例子,说明如何在0和RandomContentDiv.long-1之间随机选择一个整数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47026439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档