Core JavaScript 1.5 Guide:Predefined Core Objects:Array Object
出典: MDC
目次 |
[編集] Array オブジェクト
JavaScript には配列を表す明確なデータ型というものはありません。しかし、定義済みの Array オブジェクトとそのメソッドを使用することで、アプリケーションで配列を扱うことができます。Array オブジェクトにはさまざまな方法で配列を操作するメソッドがあります。例えば、配列の要素をつなぎ合わせたり、逆転したり、ソートしたりするものがあります。また、配列の長さを決定するプロパティや、正規表現とともに使用するプロパティもあります。
配列とは、その個々の値を名前やインデックスで参照する順序集合です。例えば、その従業員番号でインデックス付けした、従業員の名前からなる emp という配列を作ることができます。すると、emp[1] は従業員番号 1 を、emp[2] は従業員番号 2 を、というように指すようになります。
[編集] 配列の作成
Array オブジェクトは次のようにして作成します。
1. arrayObjectName = new Array(element0, element1, ..., elementN) 2. arrayObjectName = new Array(arrayLength)
arrayObjectName は新しいオブジェクト名または既存のオブジェクトのプロパティ名です。Array のプロパティやメソッドを用いるときは arrayObjectName は既存の Array オブジェクトの名前または既存のオブジェクトのプロパティ名です。
element0, element1, ..., elementN は配列の要素の値からなるリストです。この形式で指定する際に、配列はその要素として指定した値で初期化されます。また、配列の length プロパティに引数の個数がセットされます。
arrayLength は配列の初期状態の長さです。次のコードは 5 つの要素を持つ配列を作成します。
billingMethod = new Array(5)
配列リテラルも Array オブジェクトです。例えば次のリテラルは Array オブジェクトです。配列リテラルの詳細については 配列リテラル をご覧ください。
coffees = ["French Roast", "Columbian", "Kona"]
[編集] 配列要素の格納
値を要素に代入することで配列要素を格納することができます。
emp[1] = "Casey Jones" emp[2] = "Phil Lesh" emp[3] = "August West"
配列作成時に要素を格納することもできます。
myArray = new Array("Hello", myVar, 3.14159)
[編集] 配列要素の参照
要素の順番を表す数を用いて配列の要素を参照することができます。例えば、次の配列を定義したとします。
myArray = new Array("Wind","Rain","Fire")
すると、その配列の最初の要素は myArray[0] として、第 2 の要素は myArray[1] として参照できるようになります。
要素のインデックスはゼロ (0) から始まりますが、配列の長さ(例:myArray.length)はその配列の要素数を直接表します。
[編集] Array のメソッド
Array オブジェクトには以下のメソッドがあります。
-
concatは 2 つの配列を結合し、新しい配列を返す。
myArray = new Array("1","2","3")
myArray = myArray.concat("a", "b", "c"); // myArray は ["1", "2", "3", "a", "b", "c"] となる
-
join(deliminator = ",")は配列の全要素を結合し、文字列にする。
myArray = new Array("Wind","Rain","Fire")
list = myArray.join(" - "); // list は "Wind - Rain - Fire" となる
-
popは配列から最後の要素を取り除き、その要素を返す。
myArray = new Array("1", "2", "3");
last=myArray.pop(); // MyArray は ["1", "2"] となり、last = "3" となる
-
pushは 1 つ以上の要素を配列の最後に追加し、追加された最後の要素を返す。
myArray = new Array("1", "2");
myArray.push("3"); // MyArray は ["1", "2", "3"] となる
-
reverseは配列の要素を逆順に並び替える。最初の配列要素は最後に、最後のものは最初に来る。
myArray = new Array ("1", "2", "3");
myArray.reverse(); // 配列を並び替え、myArray = [ "3", "2", "1" ] となる
-
shiftは配列から最初の要素を取り除き、その要素を返す。
myArray = new Array ("1", "2", "3");
first=myArray.shift(); // MyArray は ["2", "3"] となり、first は "1" となる
-
slice (start_index, upto_index)は配列の一部分を抽出し、新しい配列を返す。
myArray = new Array ("a", "b", "c", "d", "e");
myArray = myArray.slice(1,4); //インデックス 1 からスタートし、インデックス 4 までの全要素を抽出し、[ "b", "c", "d" ] を返す。
-
splice(index, count_to_remove, addelement1, addelement2, ...)は配列に要素を追加し、かつ/または配列から要素を取り除く。
myArray = new Array ("1", "2", "3", "4", "5");
myArray.splice(1,3,"a","b","c", "d"); // MyArray は ["1", "a", "b", "c", "d", "5"] となる
// このコードはインデックス 1("2" があるところ)からスタートし、そこの 3 要素を取り除き、その場所に連続した要素をすべて挿入する
-
sortは配列の要素をソートする。
myArray = new Array("Wind","Rain","Fire")
myArray.sort(); // 配列をソートし、myArrray = [ "Fire", "Rain", "Wind" ] となる
sort は配列の内容をどうソートするかを決定するコールバック関数をとることもできます。関数は 2 つの値を比較し、3 つの値のうちの 1 つの値を返します。
- ソートシステムにとって a が b より小さい場合、-1(または任意の負数)を返す
- ソートシステムにとって a が b より大きい場合、1(または任意の正数)を返す
- a と b が等価と見なされる場合、0 を返す
例えば、次のコードは配列の最後の文字についてサポートします。
var sortFn = function(a,b){
if (a[a.length - 1] < b[b.length - 1]) return -1;
if (a[a.length - 1] > b[b.length - 1]) return 1;
if (a[a.length - 1] == b[b.length - 1]) return 0;
}
myArray.sort(sortFn); // 配列をソートし、myArray = ["Wind","Fire","Rain"] となる
-
unshiftは 1 つ以上の要素を配列の先頭に追加し、その配列の新しい長さを返す。
[編集] 2 次元配列
次のコードは 2 次元配列を作成します。
a = new Array(4)
for (i=0; i < 4; i++) {
a[i] = new Array(4)
for (j=0; j < 4; j++) {
a[i][j] = "["+i+","+j+"]"
}
}
この例では次の行を持つ配列が作成されます。
0 行目:[0,0][0,1][0,2][0,3] 1 行目:[1,0][1,1][1,2][1,3] 2 行目:[2,0][2,1][2,2][2,3] 3 行目:[3,0][3,1][3,2][3,3]
[編集] 配列と正規表現
配列が正規表現と文字列との間のマッチ結果であるとき、その配列はそのマッチについての情報を持つプロパティと要素を返します。配列は RegExp.exec、String.match、String.split の戻り値です。正規表現とともに配列を使用することに関する情報は、第 4 章の 正規表現 をご覧ください。