Adobe Flex 3 ヘルプ

多次元配列

多次元配列には、配列の要素としてさらに配列が格納されています。例えば、予定リストをストリングのインデックス配列として格納する場合を考えます。

var tasks:Array = ["wash dishes", "take out trash"];

曜日ごとにタスクのリストを個別に格納する場合は、各曜日を要素として持つ多次元配列を作成します。それぞれの要素として、予定リストを表す(tasks 配列と同様の)インデックス配列を格納します。多次元配列内では、インデックス配列と結合配列を任意に組み合わせて使用できます。以降のセクションでは、2 つのインデックス配列を使用する例と、結合配列およびインデックス配列を 1 つずつ使用する例を示します。また、実習として、考えられる残りの組み合わせについても作成してみてください。

サブトピック



2 つのインデックス配列を使用する例

インデックス配列を 2 つ使用した場合の結果は、テーブルまたはスプレッドシートのような図で表現できます。第 1 の配列に含まれる要素がテーブルの行を表し、第 2 の配列に含まれる要素が列を表します。

例えば、次の多次元配列には、曜日ごとの予定リストを 2 つのインデックス配列として格納しています。第 1 の配列 masterTaskList は、Array クラスのコンストラクタを使用して作成します。この配列の各要素は曜日に対応し、インデックス 0 が月曜、インデックス 6 が日曜を表します。それらの要素は、テーブルの行と見なすことができます。各曜日の予定リストは、masterTaskList 配列内に作成する 7 つの要素それぞれに配列リテラルを割り当てることで作成できます。これらの配列リテラルは、テーブルの列を表します。

var masterTaskList:Array = new Array();
masterTaskList[0] = ["wash dishes", "take out trash"];
masterTaskList[1] = ["wash dishes", "pay bills"];
masterTaskList[2] = ["wash dishes", "dentist", "wash dog"];
masterTaskList[3] = ["wash dishes"];
masterTaskList[4] = ["wash dishes", "clean house"];
masterTaskList[5] = ["wash dishes", "wash car", "pay rent"];
masterTaskList[6] = ["mow lawn", "fix chair"];

いずれかの予定リストに含まれる個別の予定項目にアクセスするには、角括弧表記を使用します。最初の角括弧で曜日を指定し、2 番目の角括弧でその日の予定リスト内の項目を指定します。例えば、水曜日の予定リストから 2 番目の予定を取得するには、水曜日を表すインデックス 2 と、予定リストの 2 番目の項目を表すインデックス 1 を指定します。

trace(masterTaskList[2][1]); // output: dentist

日曜日の予定リストから 1 番目の予定を取得するには、日曜日を表すインデックス 6 と、予定リストの 1 番目の項目を表すインデックス 0 を指定します。

trace(masterTaskList[6][0]); // output: mow lawn

結合配列の下位にインデックス配列を組み合わせる例

曜日について結合配列を使用し、予定リストについてインデックス配列を使用すると、個別の配列に対するアクセスが容易になります。結合配列では、特定の曜日を参照するときにドットシンタックスを使用できますが、実行時に結合配列の各要素にアクセスする際に余分な処理が必要となります。次の例では、予定リストの基礎として結合配列を使用し、曜日ごとにキー / 値ペアを指定しています。

var masterTaskList:Object = new Object();
masterTaskList["Monday"] = ["wash dishes", "take out trash"];
masterTaskList["Tuesday"] = ["wash dishes", "pay bills"];
masterTaskList["Wednesday"] = ["wash dishes", "dentist", "wash dog"];
masterTaskList["Thursday"] = ["wash dishes"];
masterTaskList["Friday"] = ["wash dishes", "clean house"];
masterTaskList["Saturday"] = ["wash dishes", "wash car", "pay rent"];
masterTaskList["Sunday"] = ["mow lawn", "fix chair"];

ドットシンタックスを使用すると、角括弧の繰り返しが避けられるので、コードが読みやすくなります。

trace(masterTaskList.Wednesday[1]); // output: dentist
trace(masterTaskList.Sunday[0]);// output: mow lawn

予定リストは for..in ループを使用して反復処理できますが、その場合は各キーに対応する値にアクセスする際にドットシンタックスではなく角括弧表記を使用する必要があります。masterTaskList は結合配列なので、次の例に示すように、必ずしも期待する順序で要素が取得されるとは限りません。

for (var day:String in masterTaskList)
{
    trace(day + ": " + masterTaskList[day])
}
/* output:
Sunday: mow lawn,fix chair
Wednesday: wash dishes,dentist,wash dog
Friday: wash dishes,clean house
Thursday: wash dishes
Monday: wash dishes,take out trash
Saturday: wash dishes,wash car,pay rent
Tuesday: wash dishes,pay bills
*/

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート