length プロパティとは何か
length プロパティは「配列の要素数」を表す特別な値です。配列に何個の要素が入っているかを常に返してくれます。ここが重要です:length は「最後のインデックス + 1」と常に一致します。つまり、配列の末尾にアクセスしたいときは arr[arr.length - 1] が定石です。
基本の使い方(要素数の確認と末尾アクセス)
要素数を調べる
const fruits = ["apple", "banana", "cherry"];
console.log(fruits.length); // 3
JavaScriptここが重要です:length は「配列に入っている数」を返します。空配列なら 0、要素を追加すれば増えます。
最後の要素を取り出す
console.log(fruits[fruits.length - 1]); // "cherry"
JavaScriptここが重要です:配列は 0 から始まるため、最後のインデックスは length – 1。これを覚えると「末尾の要素を安全に取る」ことができます。
length と追加・削除の関係
要素を追加すると length が増える
fruits.push("orange");
console.log(fruits.length); // 4
JavaScriptここが重要です:push/pop などの操作は length を自動で更新します。自分で length を計算する必要はありません。
要素を削除すると length が減る
fruits.pop();
console.log(fruits.length); // 3
JavaScriptここが重要です:配列の操作は常に length に反映されます。length は「今の状態」を正しく示すので、ループや判定に安心して使えます。
length を直接書き換える(縮める・伸ばす)
縮めると末尾が消える
const nums = [1, 2, 3, 4, 5];
nums.length = 3;
console.log(nums); // [1, 2, 3]
JavaScriptここが重要です:length を小さくすると末尾が切り落とされます。データが消えるので、意図せず縮めないよう注意してください。
伸ばすと“穴”ができる
nums.length = 6;
console.log(nums); // [1, 2, 3, <3 empty items>]
JavaScriptここが重要です:length を大きくすると「空の要素」が増えます。これは undefined とは違う“穴”で、forEach などでスキップされることがあります。初心者は混乱しやすいので、push で追加するほうが安全です。
length とループの組み合わせ(典型パターン)
for ループで使う
const arr = ["A", "B", "C"];
for (let i = 0; i < arr.length; i++) {
console.log(i, arr[i]);
}
JavaScriptここが重要です:i < arr.length がループの基本形。<= にすると範囲外を参照して undefined が出る「オフバイワン」バグになります。
while ループで使う
let i = 0;
while (i < arr.length) {
console.log(arr[i]);
i++;
}
JavaScriptここが重要です:length を条件にすれば「配列の長さに応じて安全に繰り返す」ことができます。
length と空配列の判定
空かどうかを調べる
const empty = [];
if (empty.length === 0) {
console.log("配列は空です");
}
JavaScriptここが重要です:length が 0 なら空配列。条件分岐で「データがあるかどうか」を簡単に判定できます。
よくある落とし穴と回避策
length を直接伸ばしてしまう
意図せず「穴だらけの配列」を作ると、map/filter などで期待通りに動かなくなります。追加は push を使うのが安全です。
ループ条件のオフバイワン
i <= arr.length と書くと最後に undefined を参照してしまいます。必ず i < arr.length を徹底しましょう。
length と undefined の混同
穴(empty item)は undefined とは違う扱いになることがあります。初心者は「空要素は undefined」と思いがちですが、実際は挙動が異なるので注意してください。
まとめ
length プロパティは「配列の要素数」を返す基本中の基本です。最後の要素は arr[arr.length - 1]、ループ条件は i < arr.length が鉄則。length を直接書き換えると縮めたり穴を作ったりできるため、初心者は push/pop/splice を使うほうが安全です。空配列の判定やループの基準に length を使えば、配列操作が安定してバグが減ります。
