どうも、ちょげ(@chogetarou)です。
配列(Array)をランダムに並び替える方法を紹介します。
方法

配列(Array)をシャッフルする方法は、2つあります。
sort()
1つは、sort()を使う方法です。
まず、配列からsort()を呼び出します。
sort()の引数に、2つの引数を持つラムダ式を指定します。
ラムダ式で、「0.5」からMath.random()を引いた値を指定します。
array.sort((a, b) => 0.5 - Math.random());
上記のsort()は、呼び出した配列をランダムに並び替えます。
使用例
var numbers = [1, 2, 3, 4, 5, 6, 7, 8];
numbers.sort((a, b) => 0.5 - Math.random());
console.log(numbers);
出力:
[
7, 6, 8, 4,
3, 2, 5, 1
]
フィッシャー–イェーツのアルゴリズム
もう1つは、フィッシャー–イェーツのアルゴリズムを使う方法です
まず、for文で配列の要素数の数だけループします。
そして、ループ処理に、Math.random()でフィッシャー–イェーツのアルゴリズムの処理を指定します。
//array=シャッフルする配列
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
上記のforループは、対象の配列をランダムに並び替えます。
使用例
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
}
var numbers = [1, 2, 3, 4, 5, 6, 7, 8];
shuffleArray(numbers);
console.log(numbers);
出力:
[
5, 6, 4, 2,
1, 7, 8, 3
]
まとめ
配列(Array)をシャッフルする方法は、次の2つです。
- sort()を使う方法
array.sort((a, b) => 0.5 - Math.random());
- フィッシャー–イェーツのアルゴリズムを使う方法
コメント