JavaScriptで文字列配列をシャッフル表示…簡易実装してみた

JavaScriptでこんなことしたい。

  • 文字列などの配列がある
  • それをシャッフル表示したい
  • ルーレットみたいな感じで

ちょうど以下動画のような動きです。

文字列をこの動画のようにシャッフル表示する実装方法の解説

意外と簡単に実現できたので、
文字列配列のシャッフル表示を紹介します。

1.ここで用意したHTMLとCSS

ここでは次のHTML構成を用意しました。

▼ こんなHTML構成

▼ 装飾用のCSS

▼ こんなレイアウト

今日のラッキーカラーをランダム表示するレイアウトの例

例として上記構成にしました。

動作はシンプルで #start スタートボタンを押したら #answer に文字列がランダムにシャッフル表示され、任意時間後にラッキーカラーが表示される感じです。

ちなみにanimationプロパティは以下参照

https://developer.mozilla.org/ja/docs/Web/CSS/animation

ここまでで下準備ができました。

2.シャッフル表示するコードを追加

ということで肝心のコードについて。

簡易的なシャッフル表示はこうなります。

▼ シャッフル表示のJavaScriptコード例

何をしてるかはコメントを参照

やってることは setInterval()  を使って50ミリ秒ごとに文字列配列からランダム取り出し ⇒ 要素に表示 ⇒ 3000ミリ秒後にシャッフル停止 という流れです。(参考 : https://developer.mozilla.org/ja/docs/Web/API/setInterval

あとランダムな整数の生成は以下ページで解説しました。

以下のようなシャッフル表示になります。

この動画のようにラッキーカラーを文字列配列からシャッフルして表示する機能を作ってみた

シャッフル間隔などは調整してください。

3.緩急をつけてシャッフルしてみる

ここからは応用編です。

次のように緩急つけてみます。

  • 最初は高速でシャッフル
  • 徐々にシャッフル速度を落とす
  • 最後に選ばれた文字列を表示

先ほどのコードを少し改変すれば可能です。

▼ このようにコードを改変

何をしてるかは(以下略

先ほどと違うのは setTimeout()  の中で閾値を超えるまで、再帰的にshuffle関数を呼び出してることです。もちろん再帰を使わなくても実装可能です。

以下動画のようなシャッフル表示になります。

コードを工夫すれば緩急をつけてシャッフル表示も可能

シャッフル方法は各自で工夫してください。

以上、文字列配列のシャッフル表示でした。ではまた

Shareこの記事をシェアしよう!

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください