There are two ways to create associative
arrays in ActionScript 3.0. The first way is to use an Object instance.
By using an Object instance you can initialize your array with an
object literal. An instance of the Object class, also called a
generic object
, is functionally identical to an associative array. Each property
name of the generic object serves as the key that provides access
to a stored value.
The
following example creates an associative array named
monitorInfo
, using an object literal to initialize the array with
two key and value pairs:
var monitorInfo:Object = {type:"Flat Panel", resolution:"1600 x 1200"};
trace(monitorInfo["type"], monitorInfo["resolution"]);
// output: Flat Panel 1600 x 1200
If you do not need to initialize the array at declaration time,
you can use the Object constructor to create the array, as follows:
var monitorInfo:Object = new Object();
After the array is created using either an object literal or
the Object class constructor, you can add new values to the array
using either the array access (
[]
) operator or the dot operator (
.
). The following example adds two new values to
monitorArray
:
monitorInfo["aspect ratio"] = "16:10"; // bad form, do not use spaces
monitorInfo.colors = "16.7 million";
trace(monitorInfo["aspect ratio"], monitorInfo.colors);
// output: 16:10 16.7 million
Note that the key named
aspect ratio
contains a space character. This is possible with the
array access (
[]
) operator, but generates an error if attempted with the
dot operator. Using spaces in your key names is not recommended.
The second way to create an associative array is to use the Array
constructor (or the constructor of any dynamic class) and then use
either the array access (
[]
) operator or the dot operator (
.
) to add key and value pairs to the array. If you declare
your associative array to be of type Array, you cannot use an object
literal to initialize the array. The following example creates an
associative array named
monitorInfo
using the Array constructor and adds a key called
type
and a key called
resolution
, along with their values:
var monitorInfo:Array = new Array();
monitorInfo["type"] = "Flat Panel";
monitorInfo["resolution"] = "1600 x 1200";
trace(monitorInfo["type"], monitorInfo["resolution"]);
// output: Flat Panel 1600 x 1200
There
is no advantage in using the Array constructor to create an associative array.
You cannot use the
Array.length
property or any of the methods of the Array class with
associative arrays, even if you use the Array constructor or the Array
data type. The use of the Array constructor is best left for the
creation of indexed arrays.