Array 型インスタンスであるオブジェクトの length プロパティは配列の要素数を設定・取得します。これは符号なし 32bit の整数で、常に配列内インデックスの最大値よりも大きな数値になっています。

説明

length プロパティの値は正符号を持つ整数で、2 の 32 乗 (232) 未満の値です。

var namelistA = new Array(4294967296); //2 to the 32nd power = 4294967296 
var namelistC = new Array(-100) //negative sign

console.log(namelistA.length); //RangeError: Invalid array length 
console.log(namelistC.length); //RangeError: Invalid array length 



var namelistB = []; 
namelistB.length = Math.pow(2,32)-1; //set array length less than 2 to the 32nd power 
console.log(namelistB.length); 

//4294967295

length プロパティに値をセットすることで、いつでも配列を短縮することができます。length プロパティの値を現在より大きな値に変更すると、配列内の要素数も増加します。例えば length が現在 2 のところに 3 をセットすると、配列内の要素数は 3 になり、追加された要素は undefined の値を示します。

var arr = [1, 2, 3];
printEntries(arr);

arr.length = 5; // set array length to 5 while currently 3.
printEntries(arr);

function printEntries(arr) {
  var length = arr.length;
  for (var i = 0; i < length; i++) {
    console.log(arr[i]);
  }
  console.log('=== printed ===');
}

// 1
// 2
// 3
// === printed ===
// 1
// 2
// 3
// undefined
// undefined
// === printed ===

しかし、length プロパティは必ずしも配列内に存在する値の数を示しているわけではありません【訳注: length の変更で追加された要素は、明示的に値を設定されるまで for...in や Object.keys() などに現れないことを指しています】。詳細は length と数値プロパティとの関係 をご覧ください。

Array.length のプロパティ属性
書込可能
列挙可能 不可
設定可能 不可

  • Writable: この属性が false に設定されている場合、プロパティの値を変更することはできません。
  • Configurable: この属性が false に設定されている場合、プロパティの削除や (Writable, ConfigurableEnumerable) 属性の変更を行うあらゆる試みは失敗します。
  • Enumerable: この属性が true に設定されている場合、 プロパティは for や for..in ループ中で反復の対象にされます。

配列を反復する

以下の例では、配列 numbers がいくつの要素を持っているかを知るために length プロパティを見ることで、配列を反復します。その際それぞれの値は 2 倍されます。

var numbers = [1, 2, 3, 4, 5];
var length = numbers.length;
for (var i = 0; i < length; i++) {
  numbers[i] *= 2;
}
// この時点で numbers は [2, 4, 6, 8, 10] となっている

配列を短縮する

以下の例は配列 numbers の要素数が 3 より大きいかどうかを調べて、大きいならその length を 3 としています。

var numbers = [1, 2, 3, 4, 5];

if (numbers.length > 3) {
  numbers.length = 3;
}

console.log(numbers); // [1, 2, 3]
console.log(numbers.length); // 3

仕様

仕様書 策定状況 コメント
ECMAScript 1st Edition (ECMA-262) 標準 初期定義
ECMAScript 5.1 (ECMA-262)
Array.length の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
Array.length の定義
標準  
ECMAScript Latest Draft (ECMA-262)
Array.length の定義
ドラフト  

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
lengthChrome 完全対応 ありEdge 完全対応 12Firefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり

凡例

完全対応  
完全対応

関連情報

ドキュメントのタグと貢献者

最終更新者: mdnwebdocs-bot,