为什么我的新数组中的随机数生成器不起作用?使用Javascript

时间:2017-02-22 22:59:38

标签: javascript arrays random

我正在制作纸牌游戏但是现在我遇到了随机数生成器的问题。我正在创建具有100个选项的新数组,然后从该数组中随机选择一个数字。但是,当我document.write correctNum时,我得到了未定义。

var numList = new Array(100);

var correctNum = numList[Math.floor(Math.random()*numList.length)];

document.write(correctNum);

5 个答案:

答案 0 :(得分:1)

你必须用一些东西填充数组。您所做的只是声明它的大小,因为JavaScript中的数组是动态的(也就是说,它们的大小可以在它们被创建之后增长和缩小),所以预先声明一个大小并不是那么有用:



var numList = [];

// Fill the array with numbers from 0 to 99
for(var i = 0; i < 100; ++i){
   numList.push(i);
}

var correctNum = numList[Math.floor(Math.random()*numList.length)];

// Don't use document.write. It will wipe out the existing document in 
// favor of the new content. Either write the to the console (for debugging)
// or inject data into pre-existing element that's already on the page
console.log(correctNum);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

数组numList包含100个undefined。使用实际数据填充数组后,其余逻辑将为您提供所需的内容。

例如:

for(var i=0; i<numList.length; i++){
    numList.push(i);
}

答案 2 :(得分:0)

new Array(100)返回包含100个未定义元素的数组。

&#13;
&#13;
var numList = new Array(100);
console.log(numList);
&#13;
&#13;
&#13;

如果你想从中获取一个随机数,你必须填写它或者只是制作一个包含你喜欢的数字的数组。

&#13;
&#13;
var numList = Array.apply(null, {length: 100}).map(Number.call, Number);

var correctNum = numList[Math.floor(Math.random()*numList.length)];

document.write(correctNum);
&#13;
&#13;
&#13;

答案 3 :(得分:0)

由于你的阵列目前是空的,我建议你填写你想要的任何数字。另一个解决方案,如果您只想从1-100中选择一个随机数,您的代码将使用下面的代码,该代码将返回1到100之间的随机数。

Math.floor((Math.random() * 100) + 1);
祝你好运! :)

答案 4 :(得分:0)

你的阵列仍然是空的。 通过使用构造函数arr = new Array(<integer>),它只获得长度,但索引中没有值。

var arr = new Array(100);
console.log(arr.length); // 100
console.log(arr[1]); // undefined