「詳解JavaScript オブジェクト編 #05 splice()で配列を変更してみよう」で、
spliceの使い方は以下のように解説がありました。
splice(変化が開始する位置, 削除数, 追加する要素, ...)
これを、本レッスンで使われているコード
const nums = [0, 1, 2, 3];
const num = nums.splice(Math.floor(Math.random() * nums.length), 1)[0];
に当てはめると、
splice(ランダムな位置から, 要素を1つ削除し)[削除後の配列の先頭の要素(を取り出す)]
という意味になるかと思います。
その場合、以下のように、0か1にしかなり得ないと思いますが、
取り出す数値がそれ以外にもなり得て、かつ、重複しないのはなぜでしょうか?
例)0が削除された場合 →[1, 2, 3]の先頭 = 1
1 or 2 or 3が削除された場合 →[0, 2, 3][0, 1, 3][0, 1, 2]の先頭 = 0
また、配列の要素が削除される度に、要素の数が減る(=重複しない)としても、
「0」が削除されない限り、先頭の要素は常に「0」になってしまいますが、
そうならないのはなぜでしょうか?
例)(1) 1が削除 → [0, 2, 3]の先頭 = 0
(2) 3が削除 → [0, 2]の先頭 = 0
(3) 2が削除 → [0]の先頭 = 0
この回答を見るにはプレミアムプランへの登録が必要です
プレミアムプランとは?