JavaScript の配列と「追加」をゼロから理解する
「配列」は、同じ仲間のデータを順番に並べて扱うための箱です。初心者がつまずきやすいのは「位置(インデックス)」の考え方と、「どこに追加されるのか」。ここを丁寧に押さえれば、配列は一気に扱いやすくなります。
配列の基本とインデックス
- 配列とは: 複数の値をひとまとめにできるデータの形。
- インデックス: 配列内の位置番号。最初は 0、次は 1、というふうに数える。
- length: 配列の「要素数(何個入っているか)」を表す数。
const animals = ['cat', 'dog', 'bird'];
console.log(animals[0]); // 'cat'(最初の要素)
console.log(animals.length); // 3(要素数)
JavaScript直感ポイント: インデックスは「1番目」じゃなくて「0番目」から始まる。ここだけ最初は違和感があるけど、すぐ慣れる。
配列に要素を追加する3つの方法
1. 最後に追加する(push)
- 使いどころ: 新しいものを「末尾」にどんどん足したいとき。
- 挙動: 配列の後ろに追加される。戻り値は「追加後の長さ」。
const fruits = ['apple', 'melon'];
const newLength = fruits.push('peach', 'orange');
console.log(fruits); // ['apple', 'melon', 'peach', 'orange']
console.log(newLength); // 4
JavaScript2. 最初に追加する(unshift)
- 使いどころ: 新しいものを「先頭」に入れたいとき。
- 挙動: 配列の前に追加され、既存の要素は後ろにずれる。戻り値は「追加後の長さ」。
const queue = ['task2', 'task3'];
const newLength = queue.unshift('task1');
console.log(queue); // ['task1', 'task2', 'task3']
console.log(newLength); // 3
JavaScript3. 指定した位置に直接入れる(インデックス代入)
- 使いどころ: 特定の場所にピンポイントで入れたいとき。
- 注意点: 間のインデックスを飛ばすと「空の穴(undefined)」ができがち。基本は「既存の位置を上書き」か「最後に足す」用途で使う。
const nums = [10, 20, 30];
nums[1] = 25; // 位置1の値を上書き
nums[nums.length] = 40; // 最後に追加(push と同じ効果)
console.log(nums); // [10, 25, 30, 40]
// 悪い例(穴が空く)
const arr = ['A'];
arr[5] = 'B';
console.log(arr); // ['A', undefined, undefined, undefined, undefined, 'B']
JavaScriptよくあるつまずきと回避策
- つまずき1: 最初は 0 から数えるのを忘れる
- 回避策: 「位置」を考えるときは、頭の中で 0,1,2… と数える練習をする。
- つまずき2: インデックス飛ばしで穴だらけになる
- 回避策: 「任意位置に入れたい」なら、まずは push/unshift を使ってから、必要なら並び替えを考える。
- つまずき3: 戻り値の誤解
- 回避策: push/unshift の戻り値は「追加後の長さ」。新しく追加した要素そのものではない。
例題で理解を定着させる
例題1: 会員リストに新規会員を末尾追加
- 目的: 末尾に新しい名前を追加して最新のリストを作る。
let members = ['Yuki', 'Hana'];
members.push('Sota');
console.log(members); // ['Yuki', 'Hana', 'Sota']
JavaScript- 解説ポイント: シンプルに末尾に並ぶ。「順番重視」のときは push が安心。
例題2: 優先度が高いタスクを先頭に積む
- 目的: 優先タスクは先頭に追加して、すぐ着手できるようにする。
let tasks = ['write report', 'email client'];
tasks.unshift('fix bug');
console.log(tasks); // ['fix bug', 'write report', 'email client']
JavaScript- 解説ポイント: 先頭に入ることで「並びの意味」が変わる。順序が重要なときは unshift。
例題3: 指定位置の値を更新しつつ最後にも追加
- 目的: 途中の値を修正し、さらに新しい値を追加。
let scores = [50, 60, 70];
scores[1] = 65; // 修正
scores[scores.length] = 80; // 最後に追加(push 相当)
console.log(scores); // [50, 65, 70, 80]
JavaScript- 解説ポイント: 既存の場所は「上書き」、最後は「length を使って追加」。
例題4: インデックス飛ばしの落とし穴を体験
- 目的: 飛ばすとどうなるかを自分の目で確認。
let letters = ['a'];
letters[4] = 'b';
console.log(letters); // ['a', undefined, undefined, undefined, 'b']
console.log(letters.length); // 5
JavaScript- 解説ポイント: 「穴」ができると、後の処理で扱いづらくなる。基本は避けよう。
小さな練習課題(自分で手を動かす)
- 買い物リストに品物を追加
- 課題:
['milk']にbreadを最後、eggを最初に追加して表示。 - ヒント: push と unshift。
- 課題:
- 並び替えたい気持ちを抑えてまず追加
- 課題:
['red', 'blue']の配列で、真ん中にgreenを入れたい。まずは push か unshift で追加して、最終的に['red', 'green', 'blue']にする。 - ヒント: 追加後に
spliceを使うのが正式だが、今回は「追加」だけで良い。次の学習で「削除/挿入(splice)」に進もう。
- 課題:
- 穴あき配列を作らずに 3 つ追加
- 課題: 空配列
[]に1, 2, 3を「順番通り」に追加して表示。 - ヒント:
push(1, 2, 3)が一発でできる。
- 課題: 空配列
まとめと次の一歩
- 最後に追加: push
- 最初に追加: unshift
- 位置を指定: インデックス代入(穴に注意)
- 次は「削除・挿入(pop, shift, splice)」を学ぶと、配列を自由自在に扱えるようになります。希望があれば、続きも初心者向けに丁寧に解説します。どこから掘り下げたい?
