1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
---
title: Array.length
slug: Web/JavaScript/Reference/Global_Objects/Array/length
tags:
- Array
- JavaScript
- Property
- Reference
translation_of: Web/JavaScript/Reference/Global_Objects/Array/length
---
<div>{{JSRef}}</div>
<p><code><strong>length</strong></code> は <code>Array</code> 型のインスタンスであるオブジェクトのプロパティで、配列の要素の数を設定または取得します。値は符号なし 32 ビット整数で、常に配列の最も大きなインデックスよりも数値的に大きくなります。</p>
<div>{{EmbedInteractiveExample("pages/js/array-length.html")}}</div>
<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、<a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div>
<h2 id="Description" name="Description">解説</h2>
<p><code>length</code> プロパティの値は正符号を持つ整数で、2 の 32 乗 (2<sup>32</sup>) 未満の値です。</p>
<pre class="brush: js notranslate">var namelistA = new Array(4294967296); //2 to the 32nd power<sup> = </sup>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
</pre>
<p><code>length</code> プロパティに値をセットすることで、いつでも配列を短縮することができます。<code>length</code> プロパティの値を現在より大きな値に変更すると、配列内の要素数も増加します。例えば <code>length</code> が現在 2 のところに 3 をセットすると、配列内の要素数は 3 になり、3番目の要素は反復処理できない空のスロットになります。</p>
<pre class="brush: js notranslate">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
</pre>
<p>ご覧の通り、<code>length</code> プロパティは必ずしも配列内で定義された値の数を示しているわけではありません。詳細は <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array#Relationship_between_length_and_numerical_properties" title="length と数値プロパティとの関係"><code>length</code> と数値プロパティとの関係</a> をご覧ください。</p>
<p>{{js_property_attributes(1, 0, 0)}}</p>
<div>
<ul>
<li><code>Writable</code>: この属性が <code>false</code> に設定されている場合、プロパティの値を変更することはできません。</li>
<li><code>Configurable</code>: この属性が <code>false</code> に設定されている場合、プロパティの削除や属性 (<code>Writable</code>, <code>Configurable</code>, <code>Enumerable</code>) の変更の試みは失敗します。</li>
<li><code>Enumerable</code>: この属性が <code>true</code> に設定されている場合、プロパティは <a href="/ja/docs/Web/JavaScript/Reference/Statements/for">for</a> や <a href="/ja/docs/Web/JavaScript/Reference/Statements/for...in">for..in</a> ループ中で反復処理の対象にされます。</li>
</ul>
</div>
<h2 id="Examples" name="Examples">例</h2>
<h3 id="Iterating_over_an_array" name="Iterating_over_an_array">配列を反復処理する</h3>
<p>以下の例では、配列 <code>numbers</code> がいくつの要素を持っているかを知るために <code>length</code> プロパティを見ることで、配列を反復処理します。その際それぞれの値は 2 倍されます。</p>
<pre class="brush: js notranslate">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] となった
</pre>
<h3 id="Shortening_an_array" name="Shortening_an_array">配列の短縮</h3>
<p>以下の例は配列 <code>numbers</code> の要素数が 3 より大きいかどうかを調べて、大きいならその <code>length</code> を 3 としています。</p>
<pre class="brush: js notranslate">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
</pre>
<h3 id="固定長の空の配列を作成">固定長の空の配列を作成</h3>
<pre class="brush: js notranslate">var numbers = [];
numbers.length = 3;
console.log(numbers); // [undefined, undefined, undefined]
</pre>
<h2 id="Specifications" name="Specifications">仕様</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">仕様書</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('ESDraft', '#sec-properties-of-array-instances-length', 'Array.length')}}</td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>
<div class="hidden">The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</div>
<p>{{Compat("javascript.builtins.Array.length")}}</p>
<h2 id="See_also" name="See_also">関連情報</h2>
<ul>
<li>{{jsxref("Array")}}</li>
</ul>
|