for 文でカウンターを 1 で初期化すると undefined となってしまいます

配列は 0 番目から始まることを意識しましょう。
2021年9月5日
ユーザー

いつもお世話になっております。
どうも納得がいかず、質問させて頂きたいのですが、

動画の 0 分 22 秒あたりの、
source の for 文で、0 から 14 までの数字を作っているのは、理解できているのですが、

そのあと、動画の 0 分 45 秒あたりで、
1 を足しているので、

結果として
1 から 15 までのほしい数字が取得できたのは、わかります。

しかし、それでしたら、

最初から、動画の 0 分 22 秒あたりの for 文を、

for (let i = 1; i < 16; i++) と、このように書いて、

動画の 0 分 45 秒あたりで1を、足さないで

source[i] = i; と、このように書きますと

同じ意味になるのかと思いきや、たまに undefined と出てしまい、

うまくいきませんでした。

なぜうまくいかなかったのか理由が知りたいです。

コードも貼り付けておきます。

'use strict';

{
  const source = [];
  for (let i = 1; i < 16; i++) {
    source[i] = i;
  }

  const b = [];
  for (let i = 0; i < 5; i++) {
    b[i] = source.splice(Math.floor(Math.random() * source.length), 1)[0];
  }

  console.log(b);
}

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(4)