【问题标题】:Why is my random number generator from a new array not working? Javascript为什么我的新数组中的随机数生成器不起作用? Javascript
【发布时间】:2017-02-22 22:59:37
【问题描述】:

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

var numList = new Array(100);

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

document.write(correctNum);

【问题讨论】:

  • 您没有生成随机数数组,因为您没有填充数组,只是访问了一个未定义的随机索引,因为您没有填充数组...

标签: javascript arrays random


【解决方案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);

【讨论】:

  • 啊,谢谢。我误解了新 Array 到底在做什么。
【解决方案2】:

数组 numList 包含 100 个未定义。一旦你用真实数据填充了数组,剩下的逻辑就会给你你想要的。

例如:

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

【讨论】:

    【解决方案3】:

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

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

    如果你想从中得到一个随机数,你必须填充它或者只是创建一个包含你喜欢的数字的数组。

    var numList = Array.apply(null, {length: 100}).map(Number.call, Number);
    
    var correctNum = numList[Math.floor(Math.random()*numList.length)];
    
    document.write(correctNum);

    【讨论】:

      【解决方案4】:

      由于您的数组目前是空的,我建议您使用任何您想要的数字填充它。另一种解决方案,如果您只想从 1-100 中选择一个随机数,您可以使用下面的代码,这将返回一个介于 1 到 100 之间的随机数。

      Math.floor((Math.random() * 100) + 1);
      

      祝你好运! :)

      【讨论】:

        【解决方案5】:

        您的数组仍然是空的。 通过使用构造函数arr = new Array(&lt;integer&gt;),它只获得长度,但在索引处没有值。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-02-07
          • 2021-12-10
          • 1970-01-01
          • 2010-10-30
          • 2013-02-17
          • 1970-01-01
          • 2017-03-03
          • 1970-01-01
          相关资源
          最近更新 更多