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

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応 あり あり1 あり あり あり
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応 あり あり あり4 あり あり あり

関連情報

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

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