JavaScript では、配列のシャッフルとは、要素をランダムな順序で再配置することを指します。
フィッシャー・イェーツのシャッフル アルゴリズムの最新バージョンでは、
/** * Shuffles array in place. * @param {Array} a items An array containing the items. */ function shuffle(a) { var j, x, i; for (i = a.length - 1; i > 0; i--) { j = Math.floor(Math.random() * (i + 1)); x = a[i]; a[i] = a[j]; a[j] = x; } return a; }
アルゴリズムの ES6 バージョンは次のように記述できます:
/** * Shuffles array in place. ES6 version * @param {Array} a items An array containing the items. */ function shuffle(a) { for (let i = a.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [a[i], a[j]] = [a[j], a[i]]; } return a; }
関数の汎用性を高めるには、プロトタイプ メソッドとして実装できます。配列:
Object.defineProperty(Array.prototype, 'shuffle', { value: function() { for (let i = this.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [this[i], this[j]] = [this[j], this[i]]; } return this; } });
次の例は、シャッフル関数の使用方法を示しています:
const myArray = ['1', '2', '3', '4', '5', '6', '7', '8', '9']; shuffle(myArray); console.log(myArray); // Logs a shuffled array
以上がJavaScript で配列をシャッフルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。