Typescript で配列をシャッフルしたかったので Fisher–Yates shuffle を実装した話。
調べても ts 版がなかったのでメモ的な。
実装と言っても関数を書いただけ…(簡単だからわざわざ記事とか無いのかも)
shuffle.ts
export default function shuffle<T>(array: T[]) {
const out = Array.from(array);
for (let i = out.length - 1; i > 0; i--) {
const r = Math.floor(Math.random() * (i + 1));
const tmp = out[i];
out[i] = out[r];
out[r] = tmp;
}
return out;
}
swap の部分は es6 だと 1 行で書ける