配列はなぜ0番目から始まるのか、実務でつまずく2つの場面
配列の最初の要素が「1番目」ではなく「0番目」なのは、プログラミングを始めたばかりの頃によく引っかかるポイントです。「なぜ1から数えないんだろう」と一度は疑問に思ったことがあるかもしれません。今回はこの疑問と、実務でつまずきやすい落とし穴について整理します。
なぜ0から始まるのか
配列のインデックス(番号)は、実は「何番目か」ではなく「先頭からどれだけズレているか」を表す数字です。
const fruits = ["りんご", "みかん", "ぶどう"];
console.log(fruits[0]); // "りんご"(先頭からのズレ = 0)
console.log(fruits[1]); // "みかん"(先頭からのズレ = 1)
先頭の要素は、先頭から1文字もズレていないので「ズレ0」=fruits[0]になります。「1番目だから1」ではなく「ズレがいくつか」を表していると考えると、しっくりきます。
実務でつまずきやすい2つの場面
① 配列の長さと最後のインデックスを混同する
配列の要素数(length)と、最後の要素のインデックスは1つズレます。
const fruits = ["りんご", "みかん", "ぶどう"];
console.log(fruits.length); // 3(要素は3個)
console.log(fruits[3]); // undefined(インデックス3は存在しない)
console.log(fruits[fruits.length - 1]); // "ぶどう"(正しい最後の要素)
要素が3個あるとき、インデックスは0, 1, 2の3つしかありません。最後の要素を取り出したい時は、lengthからそのまま使わず、必ず-1する必要があります。
② for文で1つ多く(または少なく)回してしまう
繰り返し処理を書くときも、同じズレが原因でミスが起きやすい場所です。
// 意図せず1回多く回ってしまう例
for (let i = 0; i <= fruits.length; i++) {
console.log(fruits[i]); // 最後にundefinedが表示される
}
// 正しい書き方
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
<=(以下)と<(未満)の違いだけですが、これを間違えると配列の外側にアクセスしてしまい、undefinedが紛れ込みます。エラーにならずに動いてしまうことがあるので、気づきにくい落とし穴です。
AIへの確認の仕方
「配列の中身がおかしい」「最後の要素が取れない」といった症状が出たときは、次のようにインデックスの計算過程を含めて伝えると、原因を見つけてもらいやすくなります。
配列を使った処理で意図しない結果になります。
配列の中身と、ループやインデックス指定をしている
コード部分を貼ります。
インデックスの計算にズレがないか確認してください。
(ここに配列の中身とコードを貼る)
インデックスがらみのミスは、コードを読むだけでは気づきにくいことが多いので、実際の配列の中身と一緒に伝えるのがポイントです。
面談なしで、今日から始められます
この講座は 未経験から Next.js + Supabase + Claude Code で Webアプリを公開するまで を全24セッションで体系化した教材付きプランです。無料相談を挟まず、申し込んだその日から教材で学習を始められます。AIが学習パートナーになって何度でも質問でき、つまずいた所だけチャットで直接サポートします。
- 今日から始める(教材完全版+月5,500円・チャット質問し放題・いつでも解約OK)→ https://menta.work/plan/20251?ref=menta-knowledge
- いきなりは不安な方へ:無料の教材体験版もあります(最初の数セッション分)→ プラン詳細をご覧ください

