Multidimensional arrays
Multidimensional arrays contain other arrays as elements. For example, consider a list of tasks that is stored as an indexed array of strings:
var tasks:Array = ["wash dishes", "take out trash"];
If you want to store a separate list of tasks for each day of the week, you can
create a multidimensional array with one element for each day of the week. Each
element contains an indexed array, similar to the tasks
array, that stores the
list of tasks. You can use any combination of indexed or associative arrays in
multidimensional arrays. The examples in the following sections use either two
indexed arrays or an associative array of indexed arrays. You might want to try
the other combinations as exercises.
Two indexed arrays
When you use two indexed arrays, you can visualize the result as a table or spreadsheet. The elements of the first array represent the rows of the table, while the elements of the second array represent the columns.
For example, the following multidimensional array uses two indexed arrays to
track task lists for each day of the week. The first array, masterTaskList
, is
created using the Array class constructor. Each element of the array represents
a day of the week, with index 0 representing Monday, and index 6 representing
Sunday. These elements can be thought of as the rows in the table. You can
create each day's task list by assigning an array literal to each of the seven
elements that you create in the masterTaskList
array. The array literals
represent the columns in the table.
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"];
You can access individual items on any of the task lists using the array access
([]
) operator. The first set of brackets represents the day of the week, and
the second set of brackets represents the task list for that day. For example,
to retrieve the second task from Wednesday's list, first use index 2 for
Wednesday, and then use index 1 for the second task in the list.
trace(masterTaskList[2][1]); // output: dentist
To retrieve the first task from Sunday's list, use index 6 for Sunday and index 0 for the first task on the list.
trace(masterTaskList[6][0]); // output: mow lawn
Associative array with an indexed array
To make the individual arrays easier to access, you can use an associative array for the days of the week and an indexed array for the task lists. Using an associative array allows you to use dot syntax when referring to a particular day of the week, but at the cost of extra run-time processing to access each element of the associative array. The following example uses an associative array as the basis of a task list, with a key and value pair for each day of the week:
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"];
Dot syntax makes the code more readable by making it possible to avoid multiple sets of brackets.
trace(masterTaskList.Wednesday[1]); // output: dentist
trace(masterTaskList.Sunday[0]);// output: mow lawn
You can iterate through the task list using a for..in
loop, but you must use
the array access ([]
) operator instead of dot syntax to access the value
associated with each key. Because masterTaskList
is an associative array, the
elements are not necessarily retrieved in the order that you may expect, as the
following example shows:
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
*/