ActionScriptにおけるMapみたいなオブジェクト 結合配列/連想配列
ActionScript上で連想配列を使うには、ObjectかDctionaryを使います。
ActionScriptでは連想配列とは言わず、結合配列と呼ぶとか。
ArrayってObjectを継承しているから、ArrayとObjectの違いは何だ?と思ってリファレンスを調べたら、Arrayも結合配列として使えるけど、その場合、Arrayのいくつかの関数が使えなくなるからObjectを使ってね、ってことらしい。
Objectクラス
Objectのプロパティを[]で参照して、連想配列として使うことができます。
キーとして指定できるのは文字列のみです。オブジェクトをキーとして使いたい場合は、Dictionaryを使用します。
var employees:Object = new Object(); employees = { e1001:"jhon", e1002:"steven", e1003:"brown" } trace(employees["e1001"]); // 値の追加 employees.e1004 = "scott"; employees["e1005"] = "daniel"; // 値の取得 trace(employees.e1004); trace(employees["e1005"]); // 全ての値を取得 // for...inステートメントで全てのキーを取得できます for (var n:String in employees) { trace(n); // key trace(employees[n]); value }
Dictionary
キーに文字列以外を指定したい場合は、Dictionaryが使用できます。
Dictionaryはflash.utilsパッケージに含まれています。
var employees:Dictionary = new Dictionary(); var jhon:Person = new Person(); var steven:Person = new Person(); var e1001:Employee = new Employee(); var e1002:Employee = new Employee(); employees[jhon] = e1001; employees[steven] = e1002; trace(Employee(employees[jhon]).getName());
EmployeeクラスとPersonクラスの中身はご想像にお任せします。
配列に関しては、ここにまとまっていました
http://www.tom.sfc.keio.ac.jp/~fjedi/wiki/index.php?%C7%DB%CE%F3%A1%A2%CA%B8%BB%FA%CE%F3%A1%A2%C0%B5%B5%AC%C9%BD%B8%BD%28ActionScript3%29#z7f00c97