Array: length
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
length
はArray
インスタンスのデータプロパティで、配列の要素の数を表します。値は符号なし 32 ビット整数で、常に配列の最も大きなインデックスよりも数値的に大きくなります。
試してみましょう
const clothing = ["shoes", "shirts", "socks", "sweaters"];console.log(clothing.length);// Expected output: 4
値
非負の整数で、 232 未満です。
Array: length のプロパティ属性 | |
---|---|
書込可能 | 可 |
列挙可能 | 不可 |
設定可能 | 不可 |
解説
length
プロパティの値は非負の整数で、 232 未満の値です。
const listA = [1, 2, 3];const listB = new Array(6);console.log(listA.length);// 3console.log(listB.length);// 6listB.length = 2 ** 32; // 4294967296// RangeError: Invalid array lengthconst listC = new Array(-100); // 負の数は許されない// RangeError: Invalid array length
配列オブジェクトはlength
プロパティを監視し、自動的にlength
値を配列のコンテンツと同期させます。これは、次のことを意味します。
- 新しい
length
を超えた要素は削除されます。 - 配列のインデックス(232 より小さい非負の整数)を現在の
length
よりも大きい値に設定するには、配列を拡張します。length
プロパティは新しい最も大きいインデックスを反映するように増加します。 length
に無効な値(例えば、負の数や非整数)を設定すると、RangeError
例外が発生します。
length
に現在の長さよりも大きな値を設定すると、配列は実際の値がundefined
ではなく、空のスロットを追加することで拡張されます。空のスロットは配列メソッドと特別な対話をします。配列メソッドと空のスロットを参照してください。
const arr = [1, 2];console.log(arr);// [ 1, 2 ]arr.length = 5; // 現在 2 の配列の長さを 5 に設定console.log(arr);// [ 1, 2, <3 つの空アイテム> ]arr.forEach((element) => console.log(element));// 1// 2
詳細はlength
と数値プロパティとの関係をご覧ください。
例
配列を反復処理する
以下の例では、配列numbers
がいくつの要素を持っているかを知るためにlength
プロパティを見ることで、配列を反復処理します。その際それぞれの値は 2 倍されます。
const numbers = [1, 2, 3, 4, 5];const length = numbers.length;for (let i = 0; i < length; i++) { numbers[i] *= 2;}// numbers は [2, 4, 6, 8, 10] となった
配列の短縮
以下の例は配列numbers
の要素数が 3 より大きいかどうかを調べて、大きいならそのlength
を 3 としています。
const numbers = [1, 2, 3, 4, 5];if (numbers.length > 3) { numbers.length = 3;}console.log(numbers); // [1, 2, 3]console.log(numbers.length); // 3console.log(numbers[3]); // undefined; the extra elements are deleted
固定長の空の配列を作成
length
に現在の長さ以上の値を設定すると、疎配列を作成します。
const numbers = [];numbers.length = 3;console.log(numbers); // [empty x 3]
length の書き込み不可の配列
length
プロパティは、現在の長さを超えて要素が追加されると、配列によって自動的に更新されます。もしlength
プロパティを書き込み不可にすると、配列はそれを更新できなくなります。これは厳格モードではエラーが発生します。
"use strict";const numbers = [1, 2, 3, 4, 5];Object.defineProperty(numbers, "length", { writable: false });numbers[5] = 6; // TypeError: Cannot assign to read only property 'length' of object '[object Array]'numbers.push(5); // // TypeError: Cannot assign to read only property 'length' of object '[object Array]'
仕様書
Specification |
---|
ECMAScript® 2026 Language Specification # sec-properties-of-array-instances-length |