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.