indexOfで配列内を検索し、ヒットしたものをspliceで配列から削除する方法
やりたいこと
以下のように、 配列からひとつづつ、ランダムに表示し、表示されたものは 配列から削除していく 方法を紹介します。
配列のコピーを変数に格納
24行目 : slice を使うことで、元の配列が変更されてしまうことを防ぎます。 この1行がないと、以下、配列(data)からひとつづつ削除され、 リセットしたとき、最初の配列(data)が空になってしまいます。
const data = [
{
q: "問題1",
a: "答え1"
},
{
q: "問題2",
a: "答え2"
},
{
q: "問題3",
a: "答え3"
},
{
q: "問題4",
a: "答え4"
},
{
q: "問題5",
a: "答え5"
}
];
let currentQuestion = data.slice();
配列からランダムに一つ取り出す
配列からランダムに一つ取り出し、変数queに格納します。
const que = currentQuestion[Math.floor(Math.random() * currentQuestion.length)];
参考
indexOfで配列内を検索し、ヒットしたものをspliceで配列から削除
1行目 : indexOfで、 配列(currentQuestion)の中から、ランダムに選んだ要素( que )を検索します。 変数indexは配列内での(que )の位置(n番目)です。
2行目 : spliceで、配列(currentQuestion) のindex番目の要素を1つ削除するという意味。
const index = currentQuestion.indexOf(que);
currentQuestion.splice(index, 1);
参考
まとめ
- sliceで、配列のコピーをとる
- indexOfで, 配列内を検索し、ヒットしたものを spliceで配列から削除
こんな記事も読まれています。
-
【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)を使って、連想配列の中身をテーブルできれいに表示する方法について紹介します。
- リンク