今回はこれがゴールです。
いくつか復習しておきます。
配列の宣言と代入についてです。
const array = [ ];
で宣言できます。
array[0] = 1;
array[1] = 4;
array[2] = 7;
array[3] = 9;
これは、下記と同様です。
const array = [1, 4, 7, 9];
次に配列のコピーについてです。
配列をコピーしたい、すなわち、各要素の値は同じだが物理的に異なる配列を作りたい場合は、スプレッド構文を使って、
let b = [ ...a];
のように作ります。
配列の要素をシャッフルするアルゴリズムは、Fisher-Yatesアルゴリズムです。
世界最速の配列シャッフルアルゴリズム、Fisher-Yatesアルゴリズム - Panda Noir
%%js
let arraySmp = [...array];
const shuffleArray = (arr) => {
for(let i= arr.length-1; i>0; i--){
let j= Math.floor(Math.random() * (i+1));
let tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
return arr;
}
console.log(shuffleArray(arraySmp));
これは結局下記と同等です
これで問題作成アプリの選択肢をランダムに入れ替えることができそうです。