从数组中选择一个随机值会给出undefined

时间:2017-01-16 08:53:26

标签: javascript

当我输入第一个数字为例如5而第二个数字为10时,我得到了未定义。我试过alert(array);来查看它的内容,但没有任何内容,因此未定义。它适用于其他数字,如1到9.为什么它给我一个5到10范围内的未定义值?我只想制作一个随机数字选择器,你输入第一个数字和第二个数字,然后给你一个随机数?

function promptUser() {
  var first = prompt("First number?");
  var second = prompt("Second number?");
  var array = [];
  //Make a range from First number to last number then choose a random number
  for (x = first; x <= second; x++) {
    array.push(x);
  }
  alert(array);
  randomInt = Math.floor(Math.random() * array.length);
  alert("The random number is " + array[randomInt]);
}

3 个答案:

答案 0 :(得分:3)

prompt()会在 string 文字中返回结果,您需要使用parseInt()或其他方法将 string 转换为 Number < / em>的。

&#13;
&#13;
var first = parseInt(prompt("First number?"), 10);
var second = parseInt(prompt("Second number?"), 10);
var array = [];

for (x = first; x <= second; x++) {
  array.push(x);
}

randomInt = Math.floor(Math.random() * array.length);
console.log(array, randomInt, "The random number is " + array[randomInt]);
&#13;
&#13;
&#13;

此外,alert()不是调试工具,请学习使用Console

答案 1 :(得分:0)

您的第一个数字被视为需要解析为int

的字符串
function promptUser(){
    var first = prompt("First number?");
    var second = prompt("Second number?");
    var array = [];
    <!--Make a range from First number to last number then choose a random number-->
    for (x = parseInt(first); x <= parseInt(second); x++){
         array.push(x);
    }
    console.log(array);
    randomInt = Math.floor(Math.random()*array.length);
    console.log(randomInt);
    alert("The random number is " + array[randomInt]);

    }
    promptUser();

答案 2 :(得分:0)

使用:

var first = parseInt(prompt("First number?"));
var second = parseInt(prompt("Second number?"));

而不是:

var first = prompt("First number?");
var second = prompt("Second number?");

prompt返回string