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

时间:2017-10-31 01:04:43

标签: javascript arrays class random rounding

我正在使用Javascript从类中设置元素的背景图像。代码在很大程度上起作用,但是当我运行代码时,我得到一个未定义的变量。我使用Math.Random()来获取变量的数字。我的代码中的问题点(或者至少我认为是):

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:

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:

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中深入探索JavaScript。我所知道的是有人说Math.Round给你一个不准确的数字(即1.5可以舍入到1),但我不认为它适用于此。任何人都可以告诉我,这是导致问题或其他原因的陈述吗?

1 个答案:

答案 0 :(得分:1)

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

您的代码已在此处获取控制台中未定义的数字...

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

有时Math.random()会给你一个接近零的非常小的数字,这转化为你试图访问未定义的RandomContentDiv [-1]。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random查看示例getRandomInt函数。这是一个如何随机选择0和RandomContentDiv.length-1之间的整数的例子。