company logo
advertisement for deep fried Twinkies


多维数组(比较简单)


多维数组

多维数组将其它数组作为其元素。例如,考虑一个任务列表,它存储为字符串索引数组:

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

如果要将一周中每天的任务存储为一个单独的列表,可以创建一个多维数组,一周中的每天使用一个元素。每个元素包含一个与 tasks 数组类似的索引数组,而该索引数组存储任务列表。在多维数组中,可以使用任意组合的索引数组和关联数组。

两个索引数组

使用两个索引数组时,可以将结果呈现为表或电子表格。第一个数组的元素表示表的行,第二个数组的元素表示表的列。

例如,以下多维数组使用两个索引数组跟踪一周中每一天的任务列表。第一个数组 masterTaskList 是使用 Array 类构造函数创建的。此数组中的各个元素分别表示一周中的各天,其中索引 0 表示星期一,索引 6 表示星期日。可将这些元素当成是表的行。可通过为 masterTaskList 数组中创建的七个元素中的每个元素分配数组文本来创建每一天的任务列表。这些数组文本表示表的列。

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,然后使用表示列表中的第二项任务的索引 1。

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

要检索星期日的任务列表中的第一项,请使用表示星期日的索引 6 和表示列表中的第一项任务的索引 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
*/