現在三択クイズを作っていて選択肢をシャッフルして表示できるようにしたいのですが、
このコードでは、選択肢ではなく、下のように配列自体がシャッフルしてしまいます。
["こうじまち","おかとまち","かゆまち"],
["ごせいもん","おなりもん","おかどもん"],
["みとちょう","おかちまち","ごしろちょう"],
["たかなわ","こうわ","たかわ"],
["ろっこつ","ししぼね","しこね"],
そうではなく、下のように配列自体をシャッフルするのではなく、選択肢の中身をシャッフルしたいのですが何か解決策があれば教えていただきたいです。
["たかなわ""たかわ","こうわ",], ["かめと""かめいど","かめど",], ["こうじまち","かゆまち""おかとまち",], ["おなりもん","ごせいもん","おかどもん"],
javascript
1コード const quizeSet = shuffle([ 2 ["たかなわ","こうわ","たかわ"], 3 ["かめいど","かめど","かめと"], 4 ["こうじまち","おかとまち","かゆまち"], 5 ["ごせいもん","おなりもん","おかどもん"], 6 ["とどろき","たたりき","たたら"], 7 ["せきこうい","いじい","しゃくじい"], 8 ["ざっしょく","ざっしき","ぞうしき"], 9 ["みとちょう","おかちまち","ごしろちょう"], 10 ["ろっこつ","ししぼね","しこね"], 11 ["こぐれ","こばく","こしゃく"], 12 ]); 13 14 15 function shuffle(arr) { 16 for (let k = arr.length - 1; k > 0; k--) { // i = ランダムに選ぶ終点のインデックス 17 const j = Math.floor(Math.random() * (k + 1)); // j = 範囲内から選ぶランダム変数 18 [arr[j], arr[k]] = [arr[k], arr[j]]; // 分割代入 i と j を入れ替える 19 } 20 return arr; 21 } 22 23 for(let i = 0; i < quizeSet.length; i++){ 24 let h = '<div class="container" id="container">' 25 + '<div class="box" id="box">' 26 + '<p class="title" id="title">' 27 +`${i + 1}.この地名はなんて読む?` 28 +'</p>' 29 + `<img src="./img/${[i]}.png">` //変数iを埋め込む 30 + '</div>' 31 + '<div class="btn" id="btn">' 32 + '<ul id="ul">' 33 + `<li id="li">${quizeSet[i][0]}</li>` 34 + `<li id="li">${quizeSet[i][1]}</li>` 35 + `<li id="li">${quizeSet[i][2]}</li>` 36 // document.write(y); 37 // }; 38 + '<div id="target">' 39 + '<p id="success" ></p>' 40 + '<p id="successText"></p>' 41 + '</div>' 42 + '</ul>' 43 + '</div>' 44 + '</div>'; 45 document.write(h); 46 };
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/30 06:32