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: If this attribute set to false, the value of the property cannot be changed.
  • Configurable: If this attribute set to false, any attempts to delete the property or change its attributes (Writable, Configurable, or Enumerable) will fail.
  • Enumerable: If this attribute set to true, the property will be iterated over during for or for..in loops.

配列を反復する

以下の例では、配列 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

Specifications

Specification Status Comment
ECMAScript 1st Edition (ECMA-262) 標準 Initial definition.
ECMAScript 5.1 (ECMA-262)
Array.length の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
Array.length の定義
標準  
ECMAScript Latest Draft (ECMA-262)
Array.length の定義
ドラフト  

Browser compatibility

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

凡例

完全対応  
完全対応

関連情報

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

このページの貢献者: AkihikoTakeda, woodmix, suruseas, teoli, ethertank, Yuichirou, Mgjbot
最終更新者: AkihikoTakeda,