2017-02-22 10 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

ああ...ちょうどあなたが配列を満たしていないため、未定義られるランダムインデックスにアクセスして、乱数列を生成していませんが宜しくお願い致します。私は、新しいArrayが何をしているのかを誤解していました。 –

0

配列numListには未定義の100が含まれています。アレイに実際のデータを入力すると、残りのロジックが必要なものを与えます。

たとえば行う:100の未定義の要素と

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

new Array(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から乱数を選択したい場合は、あなたのコード使用幸運

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

1と100の間で乱数を返します。以下のコード、! :)

0

あなたの配列はまだ空です。 コンストラクタarr = new Array(<integer>)を使用すると、長さだけが取得されますが、インデックスには値は取得されません。

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

どうすれば問題を解決できますか? – Li357

関連する問題