Array

  • リビジョンの URL スラッグ: JavaScript/Reference/Global_Objects/Array
  • リビジョンのタイトル: Array
  • リビジョンの ID: 15920
  • 作成日:
  • 作成者: Potappo
  • 現行リビジョン いいえ
  • コメント リファレンス内リンクの修正; 18 words added, 6 words removed

このリビジョンの内容

{{ 英語版章題("Summary") }}

概要

配列を扱うことができます。

{{ 英語版章題("Syntax") }}

構文

var arr1 = new Array(arrayLength);
var arr2 = new Array(element0, element1, ..., elementN);

配列リテラルは以下の形式を用います。:

var lit = [element0, element1, ..., elementN];

{{ 英語版章題("Parameters") }}

引数

arrayLength 
配列の初期の長さ。あなたは length プロパティを使ってこの値にアクセスすることが出来ます。もし指定されている値が数字でなければ、第 1 要素が指定された値を持つ、長さ 1 の配列が生成されます。1 つの配列に許されている最大の長さは 4,294,967,295 です。
elementN 
配列の要素に対する値のリスト。この書式が指定された場合、配列は指定された値がその要素として初期化され、配列の length プロパティは引数の数に設定されます。

{{ 英語版章題("Description") }}

説明

配列は、単一の変数名に関連付けられた、順番付けられた値の集合です。あなたはこれを連想配列としてではなくオブジェクトとして使うべきだという事に注意して下さい。

以下の例は、配列リテラルで Array オブジェクトを生成します。配列 coffees は 3 つの要素で構成され、長さ 3 を持ちます。

var coffees = ["Kenyan", "Columbian", "Kona"];

あなたは添字 0 から始まる2つ以上の要素を持った密な配列を、全ての要素に初期値を定義すれば、生成することが出来ます。密な配列とは、それぞれの要素が値を持つ配列です。以下のコードは、3つの要素を持つ密な配列を生成します。:

var myArray = new Array("Hello", myVar, 3.14159);

{{ 英語版章題("Indexing an array") }}

配列の添字

あなたは要素の添字(順番を表す数)を用いて、配列の要素を参照することができます。例えば、以下の配列を定義したとします。:

var myArray = new Array("Wind", "Rain", "Fire");

このとき、これらの要素を以下のようにして参照することが出来ます。

  • myArray{{ mediawiki.external("0") }} は 第 1 要素
  • myArray{{ mediawiki.external("1") }} は 第 2 要素
  • myArray{{ mediawiki.external("2") }} は 第 3 要素

{{ 英語版章題("Specifying a single parameter") }}

単一引数の指定

Array コンストラクタにただ 1 つ数字の引数を指定した場合、あなたは配列の初期の長さを指定したことになります。以下のコードは 5 要素の配列を生成します。:

var billingMethod = new Array(5);

Array コンストラクタの挙動はそのただ 1 つの引数が数字かどうかに依存します。

  • もし指定された値が数字なら、コンストラクタは数字を符号無し 32-bit 整数に変換し、length プロパティ(配列のサイズ)にその整数を設定した配列を生成します。この配列は、たとえ長さが 0 でないとしても、最初は何の要素も含みません。
  • もし指定された値が数字でなければ、第 1 要素にその指定された値を持つ長さ 1 の配列が生成されます。

以下のコードは長さ 25 の配列を生成し、その後最初の 3 要素に値を割り当てています。:

var musicTypes = new Array(25);
musicTypes[0] = "R&B";
musicTypes[1] = "Blues";
musicTypes[2] = "Jazz";

{{ 英語版章題("Increasing the array length indirectly") }}

間接的な配列長の増加

もしある配列の現在の長さを超えるような要素に値を代入すると、配列の長さが増えます。以下のコードは長さ 0 の配列を生成し、そして要素 99 に値を代入します。これにより配列の長さは 100 に変化します。

var colors = new Array();
colors[99] = "midnightblue";

{{ 英語版章題("Creating an array using the result of a match") }}

マッチ結果を利用した配列の生成

正規表現と文字列との間のマッチ結果は、配列を生成することがあります。この配列は、そのマッチについての情報を持つプロパティと要素を持ちます。RegExp.exec、String.match と String.replace の戻り値は配列です。これらのプロパティと要素を説明する助けとして、次の例を見て、そして下の表を参照してください。:

// 1つのd、続く1つ以上のb、続く1つのdにマッチ
// 一致したbと続くdを記憶
// 大小文字を無視

var myRe = /d(b+)(d)/i;
var myArray = myRe.exec("cdbBdbsbz");

このマッチから返るプロパティと要素は以下のとおりです:

プロパティ/要素 説明
input 読み取り専用のプロパティで、正規表現がマッチを行った元の文字列を反映する。 cdbBdbsbz
index 読み取り専用のプロパティで、文字列中での一致部分の、0 から始まるインデックス。 1
{{ mediawiki.external("0") }} 読み取り専用の要素で、最後に一致した文字列を指す。 dbBd
{{ mediawiki.external("1") }}, ...{{ mediawiki.external('n') }} 読み取り専用の要素で、もし正規表現が丸括弧で囲まれたサブ文字列を含むなら、それらにマッチした文字列を指す。可能な丸括弧で囲まれたサブ文字列の数は制限されていません。 {{ mediawiki.external("1") }}: bB
{{ mediawiki.external("2") }}: d

{{ 英語版章題("Properties") }}

プロパティ

{{ Js_see_prototype("Array", "プロパティ") }}

prototype
全てのオブジェクトにプロパティを追加することができます。

{{ JSInherits("Function", "プロパティ", "caller", "constructor", "length", "name") }}

{{ 英語版章題("Methods") }}

メソッド

{{ Js_see_prototype("Array", "メソッド") }}

グローバルな Array オブジェクトは、自分自身のメソッドを持っていませんが、プロトタイプチェーンを通していくつかのメソッドを継承しています。 {{ JSInherits("Function", "メソッド", "apply", "call", "toSource", "toString", "valueOf") }} {{ JSInherits("Object", "メソッド", "__defineGetter__", "__defineSetter__", "hasOwnProperty", "isPrototypeOf", "__lookupGetter__", "__lookupSetter__", "__noSuchMethod__", "propertyIsEnumerable", "unwatch", "watch") }} {{ 英語版章題("Array instances") }}

Array インスタンス

Array インスタンスは、Array.prototype を継承します。全てのコンストラクタと同様に、コンストラクタのプロトタイプオブジェクトを変更して、Array インスタンスの全てを変更することができます。

{{ 英語版章題("Properties 2") }}

プロパティ

{{ page('ja/JavaScript/Reference/Global_Objects/Array/prototype', 'プロパティ') }}

{{ 英語版章題("Methods 2") }}

メソッド

{{ 英語版章題("Mutator methods") }}

変異メソッド

{{ page('ja/JavaScript/Reference/Global_Objects/Array/prototype', '変異メソッド') }}

{{ 英語版章題("Accessor methods") }}

アクセサメソッド

{{ page('ja/JavaScript/Reference/Global_Objects/Array/prototype', 'アクセサメソッド') }}

{{ 英語版章題("Iteration methods") }}

反復メソッド

{{ page('ja/JavaScript/Reference/Global_Objects/Array/prototype', '反復メソッド') }}

{{ 英語版章題("Generic methods") }}

汎用メソッド

{{ page('ja/JavaScript/Reference/Global_Objects/Array/prototype', '汎用メソッド') }}

{{ 英語版章題("Examples") }}

{{ 英語版章題("Example: Creating an Array") }}

例: 配列を生成する

以下の例では、長さ 0 の配列 msgArray を生成し、msgArray{{ mediawiki.external("0") }}msgArray{{ mediawiki.external("99") }} に値を代入することで、配列の長さを 100 に変えています。

var msgArray = new Array();
msgArray[0] = "Hello";
msgArray[99] = "world";

if (msgArray.length == 100)
   print("The length is 100.");

{{ 英語版章題("Example: Creating a Two-dimensional Array") }}

例: 2 次元配列を生成する

以下では、文字列の 2 次元配列としてチェスボードを生成しています。 最初の動きは 1,4 の 'P' を 3,4 にコピーすることでなされます。 位置 1,4 は空白にされます。

var board = 
[ ['R','N','B','Q','K','B','N','R'],
  ['P','P','P','P','P','P','P','P'],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  ['p','p','p','p','p','p','p','p'],
  ['r','n','b','q','k','b','n','r']];
print(board.join('\n') + '\n\n');

// キングの前のポーンを 2 つ前へ移動
board[3][4] = board[1][4];
board[1][4] = ' ';
print(board.join('\n'));

出力を以下に示します:

R,N,B,Q,K,B,N,R
P,P,P,P,P,P,P,P
 , , , , , , , 
 , , , , , , , 
 , , , , , , , 
 , , , , , , , 
p,p,p,p,p,p,p,p
r,n,b,q,k,b,n,r

R,N,B,Q,K,B,N,R
P,P,P,P, ,P,P,P
 , , , , , , , 
 , , , ,P, , , 
 , , , , , , , 
 , , , , , , , 
p,p,p,p,p,p,p,p
r,n,b,q,k,b,n,r

{{ 英語版章題("See Also") }}

参照

{{ languages( { "en": "en/JavaScript/Reference/Global_Objects/Array", "es": "es/Referencia_de_JavaScript_1.5/Objetos_globales/Array", "fr": "fr/R\u00e9f\u00e9rence_de_JavaScript_1.5_Core/Objets_globaux/Array", "pl": "pl/Dokumentacja_j\u0119zyka_JavaScript_1.5/Obiekty/Array" } ) }}

このリビジョンのソースコード

<p>{{ 英語版章題("Summary") }}</p>
<h3 name=".E6.A6.82.E8.A6.81">概要</h3>
<p>配列を扱うことができます。</p>
<p>{{ 英語版章題("Syntax") }}</p>
<h3 name=".E6.A7.8B.E6.96.87">構文</h3>
<pre class="eval">var arr1 = new Array(<em>arrayLength</em>);
var arr2 = new Array(<em>element0</em>, <em>element1</em>, ..., <em>elementN</em>);
</pre>
<p>配列リテラルは以下の形式を用います。:</p>
<pre class="eval">var lit = [<em>element0</em>, <em>element1</em>, ..., <em>elementN</em>];
</pre>
<p>{{ 英語版章題("Parameters") }}</p>
<h3 name=".E5.BC.95.E6.95.B0">引数</h3>
<dl> <dt><code>arrayLength</code> </dt> <dd>配列の初期の長さ。あなたは length プロパティを使ってこの値にアクセスすることが出来ます。もし指定されている値が数字でなければ、第 1 要素が指定された値を持つ、長さ 1 の配列が生成されます。1 つの配列に許されている最大の長さは 4,294,967,295 です。</dd> <dt><code>element<em>N</em></code> </dt> <dd>配列の要素に対する値のリスト。この書式が指定された場合、配列は指定された値がその要素として初期化され、配列の length プロパティは引数の数に設定されます。</dd>
</dl>
<p>{{ 英語版章題("Description") }}</p>
<h3 name=".E8.AA.AC.E6.98.8E">説明</h3>
<p>配列は、単一の変数名に関連付けられた、順番付けられた値の集合です。あなたは<a class="external" href="http://www.andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/">これを連想配列としてではなく</a>、<a href="/Ja/JavaScript/Reference/Global_Objects/Object" title="ja/JavaScript/Reference/Global_Objects/Object">オブジェクト</a>として使うべきだという事に注意して下さい。</p>
<p>以下の例は、配列リテラルで Array オブジェクトを生成します。配列 coffees は 3 つの要素で構成され、長さ 3 を持ちます。</p>
<pre class="eval">var coffees = ["Kenyan", "Columbian", "Kona"];
</pre>
<p>あなたは添字 0 から始まる2つ以上の要素を持った密な配列を、全ての要素に初期値を定義すれば、生成することが出来ます。密な配列とは、それぞれの要素が値を持つ配列です。以下のコードは、3つの要素を持つ密な配列を生成します。:</p>
<pre class="eval">var myArray = new Array("Hello", myVar, 3.14159);
</pre>
<p>{{ 英語版章題("Indexing an array") }}</p>
<h4 name=".E9.85.8D.E5.88.97.E3.81.AE.E6.B7.BB.E5.AD.97">配列の添字</h4>
<p>あなたは要素の添字(順番を表す数)を用いて、配列の要素を参照することができます。例えば、以下の配列を定義したとします。:</p>
<pre class="eval">var myArray = new Array("Wind", "Rain", "Fire");
</pre>
<p>このとき、これらの要素を以下のようにして参照することが出来ます。</p>
<ul> <li><code>myArray{{ mediawiki.external("0") }}</code> は 第 1 要素</li> <li><code>myArray{{ mediawiki.external("1") }}</code> は 第 2 要素</li> <li><code>myArray{{ mediawiki.external("2") }}</code> は 第 3 要素</li>
</ul>
<p>{{ 英語版章題("Specifying a single parameter") }}</p>
<h4 name=".E5.8D.98.E4.B8.80.E5.BC.95.E6.95.B0.E3.81.AE.E6.8C.87.E5.AE.9A">単一引数の指定</h4>
<p><code>Array</code> コンストラクタにただ 1 つ数字の引数を指定した場合、あなたは配列の初期の長さを指定したことになります。以下のコードは 5 要素の配列を生成します。:</p>
<pre class="eval">var billingMethod = new Array(5);
</pre>
<p><code>Array</code> コンストラクタの挙動はそのただ 1 つの引数が数字かどうかに依存します。</p>
<ul> <li>もし指定された値が数字なら、コンストラクタは数字を符号無し 32-bit 整数に変換し、length プロパティ(配列のサイズ)にその整数を設定した配列を生成します。この配列は、たとえ長さが 0 でないとしても、最初は何の要素も含みません。</li> <li>もし指定された値が数字でなければ、第 1 要素にその指定された値を持つ長さ 1 の配列が生成されます。</li>
</ul>
<p>以下のコードは長さ 25 の配列を生成し、その後最初の 3 要素に値を割り当てています。:</p>
<pre class="eval">var musicTypes = new Array(25);
musicTypes[0] = "R&amp;B";
musicTypes[1] = "Blues";
musicTypes[2] = "Jazz";
</pre>
<p>{{ 英語版章題("Increasing the array length indirectly") }}</p>
<h4 name=".E9.96.93.E6.8E.A5.E7.9A.84.E3.81.AA.E9.85.8D.E5.88.97.E9.95.B7.E3.81.AE.E5.A2.97.E5.8A.A0">間接的な配列長の増加</h4>
<p>もしある配列の現在の長さを超えるような要素に値を代入すると、配列の長さが増えます。以下のコードは長さ 0 の配列を生成し、そして要素 99 に値を代入します。これにより配列の長さは 100 に変化します。</p>
<pre class="eval">var colors = new Array();
colors[99] = "midnightblue";
</pre>
<p>{{ 英語版章題("Creating an array using the result of a match") }}</p>
<h4 name=".E3.83.9E.E3.83.83.E3.83.81.E7.B5.90.E6.9E.9C.E3.82.92.E5.88.A9.E7.94.A8.E3.81.97.E3.81.9F.E9.85.8D.E5.88.97.E3.81.AE.E7.94.9F.E6.88.90">マッチ結果を利用した配列の生成</h4>
<p>正規表現と文字列との間のマッチ結果は、配列を生成することがあります。この配列は、そのマッチについての情報を持つプロパティと要素を持ちます。RegExp.exec、String.match と String.replace の戻り値は配列です。これらのプロパティと要素を説明する助けとして、次の例を見て、そして下の表を参照してください。:</p>
<pre class="eval">// 1つのd、続く1つ以上のb、続く1つのdにマッチ
// 一致したbと続くdを記憶
// 大小文字を無視

var myRe = /d(b+)(d)/i;
var myArray = myRe.exec("cdbBdbsbz");
</pre>
<p>このマッチから返るプロパティと要素は以下のとおりです:</p>
<table class="fullwidth-table"> <tbody> <tr> <td class="header">プロパティ/要素</td> <td class="header">説明</td> <td class="header">例</td> </tr> <tr> <td><code>input</code></td> <td>読み取り専用のプロパティで、正規表現がマッチを行った元の文字列を反映する。</td> <td>cdbBdbsbz</td> </tr> <tr> <td><code>index</code></td> <td>読み取り専用のプロパティで、文字列中での一致部分の、0 から始まるインデックス。</td> <td>1</td> </tr> <tr> <td><code>{{ mediawiki.external("0") }}</code></td> <td>読み取り専用の要素で、最後に一致した文字列を指す。</td> <td>dbBd</td> </tr> <tr> <td><code>{{ mediawiki.external("1") }}, ...{{ mediawiki.external('n') }}</code></td> <td>読み取り専用の要素で、もし正規表現が丸括弧で囲まれたサブ文字列を含むなら、それらにマッチした文字列を指す。可能な丸括弧で囲まれたサブ文字列の数は制限されていません。</td> <td>{{ mediawiki.external("1") }}: bB<br> {{ mediawiki.external("2") }}: d</td> </tr> </tbody>
</table>
<p>{{ 英語版章題("Properties") }}</p>
<h3 name=".E3.83.97.E3.83.AD.E3.83.91.E3.83.86.E3.82.A3">プロパティ</h3>
<p>{{ Js_see_prototype("Array", "プロパティ") }}</p>
<dl> <dd> <dl> <dt><a href="/Ja/JavaScript/Reference/Global_Objects/Array/prototype" title="ja/JavaScript/Reference/Global_Objects/Array/prototype">prototype</a></dt> <dd>全てのオブジェクトにプロパティを追加することができます。</dd> </dl> </dd>
</dl>
<p>{{ JSInherits("Function", "プロパティ", "caller", "constructor", "length", "name") }}</p>
<p>{{ 英語版章題("Methods") }}</p>
<h3 name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h3>
<p>{{ Js_see_prototype("Array", "メソッド") }}</p>
<p>グローバルな <code>Array</code> オブジェクトは、自分自身のメソッドを持っていませんが、プロトタイプチェーンを通していくつかのメソッドを継承しています。 {{ JSInherits("Function", "メソッド", "apply", "call", "toSource", "toString", "valueOf") }} {{ JSInherits("Object", "メソッド", "__defineGetter__", "__defineSetter__", "hasOwnProperty", "isPrototypeOf", "__lookupGetter__", "__lookupSetter__", "__noSuchMethod__", "propertyIsEnumerable", "unwatch", "watch") }} {{ 英語版章題("Array instances") }}</p>
<h3 name="Array_.E3.82.A4.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.82.B9"><code>Array</code> インスタンス</h3>
<p><code>Array</code> インスタンスは、<a href="/Ja/JavaScript/Reference/Global_Objects/Array/prototype" title="Ja/JavaScript/Reference/Global_Objects/Array/prototype">Array.prototype</a> を継承します。全てのコンストラクタと同様に、コンストラクタのプロトタイプオブジェクトを変更して、<code>Array</code> インスタンスの全てを変更することができます。</p>
<p>{{ 英語版章題("Properties 2") }}</p>
<h4>プロパティ</h4>
<p>{{ page('ja/JavaScript/Reference/Global_Objects/Array/prototype', 'プロパティ') }}</p>
<p>{{ 英語版章題("Methods 2") }}</p>
<h4>メソッド</h4>
<p>{{ 英語版章題("Mutator methods") }}</p>
<h5>変異メソッド</h5>
<p>{{ page('ja/JavaScript/Reference/Global_Objects/Array/prototype', '変異メソッド') }}</p>
<p>{{ 英語版章題("Accessor methods") }}</p>
<h5>アクセサメソッド</h5>
<p>{{ page('ja/JavaScript/Reference/Global_Objects/Array/prototype', 'アクセサメソッド') }}</p>
<p>{{ 英語版章題("Iteration methods") }}</p>
<h5>反復メソッド</h5>
<p>{{ page('ja/JavaScript/Reference/Global_Objects/Array/prototype', '反復メソッド') }}</p>
<p>{{ 英語版章題("Generic methods") }}</p>
<h5>汎用メソッド</h5>
<p>{{ page('ja/JavaScript/Reference/Global_Objects/Array/prototype', '汎用メソッド') }}</p>
<p>{{ 英語版章題("Examples") }}</p>
<h3 name=".E4.BE.8B">例</h3>
<p>{{ 英語版章題("Example: Creating an Array") }}</p>
<h4 name=".E4.BE.8B:_.E9.85.8D.E5.88.97.E3.82.92.E7.94.9F.E6.88.90.E3.81.99.E3.82.8B">例: 配列を生成する</h4>
<p>以下の例では、長さ 0 の配列 <code>msgArray</code> を生成し、<code>msgArray{{ mediawiki.external("0") }}</code> と <code>msgArray{{ mediawiki.external("99") }}</code> に値を代入することで、配列の長さを 100 に変えています。</p>
<pre class="eval">var msgArray = new Array();
msgArray[0] = "Hello";
msgArray[99] = "world";

if (msgArray.length == 100)
   print("The length is 100.");
</pre>
<p>{{ 英語版章題("Example: Creating a Two-dimensional Array") }}</p>
<h4 name=".E4.BE.8B.EF.BC.9A_2_.E6.AC.A1.E5.85.83.E9.85.8D.E5.88.97.E3.82.92.E7.94.9F.E6.88.90.E3.81.99.E3.82.8B">例: 2 次元配列を生成する</h4>
<p>以下では、文字列の 2 次元配列としてチェスボードを生成しています。 最初の動きは 1,4 の 'P' を 3,4 にコピーすることでなされます。 位置 1,4 は空白にされます。</p>
<pre class="eval">var board = 
[ ['R','N','B','Q','K','B','N','R'],
  ['P','P','P','P','P','P','P','P'],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  [' ',' ',' ',' ',' ',' ',' ',' '],
  ['p','p','p','p','p','p','p','p'],
  ['r','n','b','q','k','b','n','r']];
print(board.join('\n') + '\n\n');

// キングの前のポーンを 2 つ前へ移動
board[3][4] = board[1][4];
board[1][4] = ' ';
print(board.join('\n'));
</pre>
<p>出力を以下に示します:</p>
<pre class="eval">R,N,B,Q,K,B,N,R
P,P,P,P,P,P,P,P
 , , , , , , , 
 , , , , , , , 
 , , , , , , , 
 , , , , , , , 
p,p,p,p,p,p,p,p
r,n,b,q,k,b,n,r

R,N,B,Q,K,B,N,R
P,P,P,P, ,P,P,P
 , , , , , , , 
 , , , ,P, , , 
 , , , , , , , 
 , , , , , , , 
p,p,p,p,p,p,p,p
r,n,b,q,k,b,n,r
</pre>
<p>{{ 英語版章題("See Also") }}</p>
<h3 name=".E5.8F.82.E7.85.A7">参照</h3>
<ul> <li><a href="/ja/Core_JavaScript_1.5_Guide/Predefined_Core_Objects/Array_Object" title="ja/Core_JavaScript_1.5_Guide/Predefined_Core_Objects/Array_Object">Core JavaScript 1.5 Guide:Predefined Core Objects:Array Object</a></li> <li><a href="/ja/New_in_JavaScript_1.7#Array_comprehensions" title="ja/New_in_JavaScript_1.7#Array_comprehensions">New in JavaScript 1.7: 配列内包</a></li> <li><a href="/ja/New_in_JavaScript_1.6#Array_extras" title="ja/New_in_JavaScript_1.6#Array_extras">New in JavaScript 1.6: Array の拡張</a></li>
</ul>
<p>{{ languages( { "en": "en/JavaScript/Reference/Global_Objects/Array", "es": "es/Referencia_de_JavaScript_1.5/Objetos_globales/Array", "fr": "fr/R\u00e9f\u00e9rence_de_JavaScript_1.5_Core/Objets_globaux/Array", "pl": "pl/Dokumentacja_j\u0119zyka_JavaScript_1.5/Obiekty/Array" } ) }}</p>
Revert to this revision