spliceで取り出す数値が重複しないのはなぜですか?

2020年4月25日
ユーザー

「詳解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

この回答を見るにはプレミアムサービスへの登録が必要です

プレミアムサービスとは?