【javascript】ビンゴゲームで使える、重複なしでランダムに数字を表示させる方法

やりたいこと
以下のように、数字をランダム表示させ、一度現れた数字は、配列から削除し、 2度表示させないようにする方法を紹介します。
配列を生成し、ランダムにする
1行目 : 配列を宣言しておく
4行目 : ここでは0~100までをfor文 でループさせて配列を作ります。100の部分を1000にすることも可。
8行目 : 配列の中身をシャッフルし、ランダムにする。
let numberArr = [];
let randomNumberArr = [],
for (let i = 0; i <= 100; i++) {
numberArr.push(i);
}
randomNumberArr = shuffle(numberArr);
function shuffle(arrays) {
const array = arrays.slice();
for (let i = array.length - 1; i >= 0; i--) {
const randomIndex = Math.floor(Math.random() * (i + 1));
[array[i], array[randomIndex]] = [array[randomIndex], array[i]];
}
return array;
}
数字をランダムに表示させる
const number = document.querySelector(".number"); // 数字を表示させる要素
const btn = document.querySelector("button"); // ボタン
let timerId; // setIntervalを止めるための変数
btn.addEventListener("click", () => {
if (btn.textContent == "Start") { // ボタンの表示が「Start」の場合
timerId = setInterval(function () {
let index = Math.floor(Math.random()*numberArr.length);
text.textContent = numberArr[index];
}, 25);
btn.textContent = "Stop";
} else { // ボタンの表示が「Start」ではない場合
text.textContent = randomNumberArr[0]; // 配列の1番目を表示させる
btn.textContent = "Start";
clearInterval(timerId); // setIntervalを止める
randomNumberArr.shift(); // 配列の1番目を削除
if(randomNumberArr.length == 0){ // 配列の中がすべて削除されたら終了
btn.textContent = "終了";
btn.setAttribute("disabled", "true") // クリックを無効にする
}
}
});
参考



まとめ
- for文で配列を生成する
- シャッフルする関数を作り、配列の中身を入れ替える
- 配列の1番目を表示し、表示されたものを配列から削除する
こんな記事も読まれています。
-
【HTML】【CSS】【javascript】電卓の作り方
電卓のソースコードを2つ紹介します。javascriptはわずか数行で書けます。
-
【JacvaScript】【CSS】たった4行のJavaScriptでできるハンバーガーメニューの作り方
たった4行のJavaScriptで作るハンバーガーメニューの作り方について紹介します。✖をつくるには、transform-originがポイントです。
- リンク
-
波紋エフェクトを表現するjqueryのripples-min.jsの使い方
jqueryのripples-min.jsを使うと簡単に水面の波紋を表現できます。波紋の広がりの速度、波紋の大きさ、波紋のブレの値を変えていろいろ表現させると面白いです。
-
【Javascript】querySelectorAllで要素を取得し、クリックしたら、クラスを追加したり、削除したりする方法。
JavascriptのquerySelectorAllで要素を取得し、クリックしたら、クラスを追加したり、削除したりする方法について解説します。querySelectorと同じように書いてしまうとエラーがでます。forEachを使うとすべてに適用できます。
- リンク
-
要素の高さを取得する方法。getBoundingClientRectとは?window.innerHeightとは?window.pageYOffsetとは?
要素の高さを取得する方法について解説します。getBoundingClientRect、window.innerHeight、window.pageYOffsetについて理解し、要素がいつ画面に現れるかを把握できるようにしましょう。
-
Javascriptを使ったページネーションの実装
トップページの記事が増えてきたので、何とかページネーションで最新の記事だけを表示できないかと思っていたら、いい記事を発見しました。カスタマイズして実装することができました。
- リンク
-
【Javascript】マウスの指す(X, Y)座標とドラッグ & ドロップを理解する
マウスの指す(X, Y)座標とドラッグ & ドロップについて解説します。mousedown, mouseover, mousemove, mouseupを使います。
-
【javascript】連想配列をテーブルできれいに表示する方法
javascript(Object.entries)を使って、連想配列の中身をテーブルできれいに表示する方法について紹介します。
- リンク