Day 2・条件と くり返し — プログラムに判断させる
配列 — 複数の値を順番にまとめる
配列で値をまとめて持つ。作り方、0から始まる添字、length(個数)を読めるようにする。
配列は「番号付きのロッカー」
値が1つだけなら変数で足りますが、「くだものの名前を3つ」のように複数まとめたいことがあります。そのための入れ物が配列です。配列は「番号付きのロッカーが横に並んだもの」とイメージすると分かりやすいです。それぞれのロッカーに値が1つずつ入っていて、番号で取り出せます。
const fruits = ["りんご", "みかん", "ぶどう"];
console.log(fruits); // ["りんご", "みかん", "ぶどう"]添字は0から始まる
配列から1つ取り出すには、[番号] を使います。この番号を添字(そえじ、インデックス)と呼びます。大事なのは、番号が1ではなく 0 から始まることです。ロッカーの一番左が「0番」だと思ってください。
const fruits = ["りんご", "みかん", "ぶどう"];
console.log(fruits[0]); // りんご(最初)
console.log(fruits[1]); // みかん
console.log(fruits[2]); // ぶどう(最後)1番目は [0]。1つずれやすい
「1番目」を取りたくて fruits[1] と書くと、実際には2番目の "みかん" が返ってきます。人間の数え方(1から)とコンピュータの添字(0から)は1つずれています。ここは初心者が最もつまずくポイントなので、「最初は [0]」と口に出して覚えましょう。
存在しない番号を指定すると、エラーではなく undefined(値なし)が返ります。3つの配列に fruits[5] はないので undefined です。エラーが出ないぶん気づきにくいので注意します。
const fruits = ["りんご", "みかん", "ぶどう"];
console.log(fruits[5]); // undefined(その番号のロッカーは無い)length で「何個あるか」を知る
配列.length で、中に値がいくつ入っているか(個数)が分かります。個数は1から数えた数なので、最後の添字は length より1小さくなります(添字は0から始まるため)。
const fruits = ["りんご", "みかん", "ぶどう"];
console.log(fruits.length); // 3(個数)
console.log(fruits[fruits.length - 1]); // ぶどう(最後の要素)なぜ配列でまとめるのか
もし fruit1、fruit2、fruit3 と別々の変数にすると、数が増えるたびに変数を足す必要があり、まとめて処理もできません。配列にまとめておけば、length で個数を数えたり、次のレッスンのように1件ずつ順番に処理したりできます。「同じ種類のものを順番にまとめて持ちたい」ときが配列の出番です。
AIにはこう聞く
「この配列の3番目の値を取り出すコードを書いて」と頼むと、AIは添字が0からであることを踏まえて fruits[2] のように書いてくれます。あなたは、その番号が本当に意図した位置か(1つずれていないか)を確認します。配列の中身が分からないときは「この配列にはいくつ値が入っている?」と length を使って確かめるよう頼むのも有効です。
- 配列は [ ] の中に値を並べて作る(例: ["a", "b"])
- 取り出しは 配列[添字]。添字は0から始まる(先頭は [0])
- 無い番号を指定すると undefined が返る
- 配列.length で個数が分かる。最後の添字は length - 1
読んでも腑に落ちない所は、AIに噛み砕いてもらいましょう。
理解度チェック
答えられれば、面接で説明できる状態に一歩近づきます。
const arr = ["a", "b", "c"]; のとき、arr[1] の値はどれですか。
const arr = ["a", "b", "c"]; のとき、arr.length の値と、最後の要素を取り出す式の組み合わせとして正しいものはどれですか。
値を fruit1、fruit2、fruit3 と別々の変数にするより、配列にまとめるほうがよいのはなぜですか。
記述式です。まず自分の言葉で答えを考えてから、模範解答を開いて自己採点してください。