タイトルを書き直しました: JavaScript 配列をランダムにソート (シャッフル) する方法を学びます
P粉818125805
P粉818125805 2023-08-21 11:28:39
0
2
569
<p>次のような配列があります:</p> <pre class="brush:php;toolbar:false;">var arr1 = ["a", "b", "c", "d"];</pre> <p>ランダム化/シャッフルするにはどうすればよいですか? </p>
P粉818125805
P粉818125805

全員に返信(2)
P粉810050669

これは、フィッシャー・イェーツ アルゴリズムの最適化されたバージョンである Durstenfeld shuffle の JavaScript 実装です。 リーリー

これは、トランプのデッキからランダムに描画するのと同じように、元の配列要素ごとにランダムな要素を選択し、次の描画から除外します。

この賢い削除操作は、選択された要素を現在の要素と交換し、残りの要素から次のランダムな要素を選択し、効率を最適化するために逆方向にループし、ランダムな選択が確実に単純化されるようにします (常に 0 から開始できます)。最後の要素をスキップします。

アルゴリズムの実行時間は

O(n) です。シャッフルはその場で行われるため、元の配列を変更したくない場合は、最初に .slice(0) を使用してコピーを作成することに注意してください。


編集: ES6/ECMAScript 2015 に更新されました

新しい ES6 では、2 つの変数を同時に割り当てることができます。これは、1 行のコードで実行できるため、2 つの変数の値を交換する場合に特に便利です。この機能を使用する同じ関数の短い形式を次に示します。

リーリー

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート