多次元配列で[0,1], [2,3], [4,5]みたいなものを作りたいのですが、main関数の結果は下記の写真のように[x,x],[x,x]となってしまいます。
そこで3つ質問です。
① [[0,1], [2,3], [4,5]]みたいに配列の中に配列を作るときは下記のmain関数の処理をどのように変更すれば実現できますか?
② rand()をstimu変数に入れているのでmain(stimu)の値が何回やっても同じになるのは分かるんですが、どうすればランダムに取り出してmain()のendList[]に追加できますか?
③ rand()の取り出す処理でdocument.write("<div>"+combo+"</div>");を追加すると結果は下記の写真みたいに42個の組み合わせ全てを取得できるんですが、return combo;すると最初の1組だけ取得されてしまいます。なぜでしょうか?
JavaScript
1//main関数 2function main(stimu) { 3 var endList = []; 4 5 endList.push([stimu[0], stimu[1]]); 6 console.log(endList[0]); 7 endList.push([stimu[0], stimu[1]]); 8 console.log(endList[1]); 9} 10 11 12//ランダムな値を取得 13function rand() { 14 var movieList = [0, 1, 2, 3, 4, 5, 6]; 15 var movie_1, movie_2; 16 17 // 組み合わせの用意 18 var movieComb = []; 19 for (var i = 0; i < movieList.length; i++) { 20 for (var j = 0; j < movieList.length; j++) { 21 if (movieList[i] !== movieList[j]) { 22 movieComb.push([movieList[i], movieList[j]]); 23 } 24 } 25 } 26 27 // シャッフルする 28 for (var i = movieComb.length - 1; i > 0; i--) { 29 var r = Math.floor(Math.random() * (i + 1)); 30 var tmp = movieComb[i]; 31 movieComb[i] = movieComb[r]; 32 movieComb[r] = tmp; 33 } 34 // 取り出す 35 for (var i = 0; i < movieComb.length; i++) { 36 movie_1 = movieComb[i][0]; 37 movie_2 = movieComb[i][1]; 38 var combo = movieComb[I]; 39 document.write("<div>"+combo+"</div>"); 40 return combo; 41 } 42} 43var stimu = rand();
どうか、解決方法をよろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー