Flash CS3 ドキュメンテーション |
|||
| ActionScript 3.0 のプログラミング > 配列の操作 > 多次元配列 | |||
多次元配列には、配列の要素としてさらに配列が格納されています。たとえば、ストリングのインデックス配列として格納される予定リストがあるとします。
var tasks:Array = ["wash dishes", "take out trash"];
曜日ごとに異なる予定リストを格納する必要がある場合は、各曜日を要素として持つ多次元配列を作成できます。それぞれの要素として、予定リストを表す tasks 配列と同様のインデックス配列を格納します。多次元配列内では、インデックス配列と結合配列を任意に組み合わせて使用できます。以降のセクションでは、2 つのインデックス配列を使用する例と、結合配列およびインデックス配列を 1 つずつ使用する例を示します。また、実習として、考えられる残りの組み合わせについても作成してみてください。
インデックス配列を 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]); // 出力: dentist
日曜日の予定リストから 1 番目の予定を取得するには、日曜日を表すインデックス 6 と、予定リストの 1 番目の項目を表すインデックス 0 を指定します。
trace(masterTaskList[6][0]); // 出力 : 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]); // 出力: dentist trace(masterTaskList.Sunday[0]); // 出力 : 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
*/
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000091.html