2017-02-22 35 views
-2

Я делаю карточную игру, но прямо сейчас у меня проблема с генератором случайных чисел. Я создаю новый массив со 100 вариантами, а затем произвольно выбираю число из этого массива. Однако, когда я document.write correctNum, я становлюсь неопределенным.Почему мой генератор случайных чисел из нового массива не работает? Javascript

var numList = new Array(100); 

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

document.write(correctNum); 
+4

Вы не генерируете массив случайных чисел, потому что вы не заполняя массив, просто доступ к случайному индексу, который будет неопределенным, потому что вы не заполнили массив ... – Li357

ответ

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);

+0

Ах спасибо. Я неправильно истолковал, что именно делал новый массив. –

0

массив numList содержит 100 не определено. Когда вы заполняете массив реальными данными, остальная часть логики даст вам то, что вы хотите.

сделать, например:

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

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);

0

Поскольку ваш массив пуст, я бы рекомендовал заполнять его с любыми номерами вы хотели бы. Другое решение, если вы просто хотите, чтобы выбрать случайное число из 1-100, вы код использовать этот код ниже, который возвращает случайное число в диапазоне от 1 до 100.

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

Удачи! :)

0

Ваш массив по-прежнему пуст. Используя конструктор arr = new Array(<integer>), он получает только длину, но без индексов.

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

И как бы вы решили проблему? – Li357