要创建用名称元素作为索引的数组
解决办法
创建关联数组
讨论
用关联数组其每个元素都有特定的含义,这一点原来的数组类型是做不到的。
var?aMembers:Array?=?new?Array("Franklin",?"Gina",?"Sindhu");
关联数组在其他的语言叫做哈希表,在ActionScript 里它就是Object 类的一个实例,关联数组使用名称元素来代替数字下标,该名称也被称为关键字或属性,说关键字更好理解些,它关联了元素值,两者一一对应。
创建关联数组不是用Array 类而是Object类创建的,它就是Object 类的一个实例,理论上Object 类是任何类的基类。所有的对象都能作为关联数组,但是除非有特殊需要,最好还是用Object 类创建。
用{ } ,而且用逗号分开每个键值对,键值对之间用:,像下面:
?
var?memebers:Object?=?{scribe:?"Franklin",
chairperson:?"Gina",
treasurer:?"Sindhu"};
chairperson:?"Gina",
treasurer:?"Sindhu"};
也可以像下面那样创建关联数组:
var?members:Object?=?new?Object(?);
members.scribe?=?"Franklin";
members.chairperson?=?"Gina";
members.treasurer?=?"Sindhu";
members.scribe?=?"Franklin";
members.chairperson?=?"Gina";
members.treasurer?=?"Sindhu";
有两种方法访问关联数组内容,一种是通过访问属性名称(关键字):
trace(members.scribe);?//?显示:?Franklin
另一种就像数组那样,把关键字作为下标来访问,用[ ] 符号:
trace(members["scribe"]);?//?显示:?Franklin
这种方式更加灵活,可以在数组中进行遍历,对于动态生成的关键值和内容这种访问方式是最好的,例如:
var?members:Object?=?new?Object();
members.councilperson1?=?"Beatrice";
members.councilperson2?=?"Danny";
members.councilperson3?=?"Vladamir";
for?(var?i:int?=?1;?i?<=?3;?i++)?{
trace(members["councilperson"?+?i];
}
members.councilperson1?=?"Beatrice";
members.councilperson2?=?"Danny";
members.councilperson3?=?"Vladamir";
for?(var?i:int?=?1;?i?<=?3;?i++)?{
trace(members["councilperson"?+?i];
}
数组访问方式在循环语句里经常用到:
var?members:Object?=?new?Object(?);
members["councilperson"]?=?"Ruthie";
trace(members.councilperson);?//?显示Ruthie
members.councilperson?=?"Rebecca";
trace(members["councilperson"]);?//?显示:?Rebecca
members["councilperson"]?=?"Ruthie";
trace(members.councilperson);?//?显示Ruthie
members.councilperson?=?"Rebecca";
trace(members["councilperson"]);?//?显示:?Rebecca