前提・実現したいこと
例えば、
let num = Math.floor(Math.random() * 5 );とするとランダムな数値を一つずつ
取り出すように、重複しないランダムな数値を一つずつ取り出して使いたいのですが、
どうしたらよろしいでしょうか?
どなたか詳しい方ご教示お願いいたします。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
shift()を使うと、ランダムな重複しない配列から最初の方の数値を削除するため、
ひとつずつ表示できても、デバッグしていくとword = words[nums.shift()];のnumsの
要素数自体減ってしまいます。
エラーメッセージ
該当のソースコード
JavaScript
1const words = [ 2 'dream', 3 'sky', 4 'blue', 5 'middle', 6 'cloud', 7 ]; 8 9 const nums = [0,1,2,3,4]; 10 11 let word; 12 let r; 13 14 function question() { 15 for (let i = nums.length -1; i > 0; i--) { 16 r = Math.floor(Math.random() * (i + 1)); 17 18 let tmp = nums[i]; 19 nums[i] = nums[r]; 20 nums[r] = tmp; 21 } 22 let i; 23 word = words[nums.shift()]; 24 }
試したこと
shift()以外のメソッドを探したのですが、ほとんど要素を返すものではなかったため、うまくいきませんでした。
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー