Det finns två sätt att skapa associativa arrayer i ActionScript 3.0: Det första är att använda en Object-instans. Genom att använda en Object-instans kan du initiera arrayen med en objektlitteral. En instans av Object-klassen, som även kallas ett
generiskt objekt
, är funktionsmässigt identisk med en associativ array. Varje egenskapsnamn för det generiska objektet fungerar som en nyckel som ger åtkomst till ett sparat värde.
I exemplet nedan skapas en associativ array med namnet
monitorInfo
och här används en objektlitteral för att initiera arrayen med två nyckel-/värde-par:
var monitorInfo:Object = {type:"Flat Panel", resolution:"1600 x 1200"};
trace(monitorInfo["type"], monitorInfo["resolution"]);
// output: Flat Panel 1600 x 1200
Om du inte behöver initiera arrayen när den deklareras kan du använda konstruktorn Object för att skapa arrayen, vilket visas i nästa exempel:
var monitorInfo:Object = new Object();
När arrayen har skapats, antingen med hjälp av en objektlitteral eller konstruktorn för klassen Object, kan du lägga till nya värden i arrayen med hjälp av operatorn för arrayåtkomst (
[]
) eller punktoperatorn (
.
). I följande exempel läggs två nya värden till i
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
Observera att nyckeln med namnet
aspect ratio
innehåller ett blanksteg. Detta fungerar med operatorn för arrayåtkomst (
[]
), men leder till ett fel med punktoperatorn. Därför bör du inte använda blanksteg i nyckelnamn.
Det andra sättet att skapa en associativ array är att använda konstruktorn Array (eller konstruktorn för någon dynamisk klass) och sedan antingen operatorn för arrayåtkomst (
[]
) eller punktoperatorn (
.
) för att lägga till par med nyckel och värde till arrayen. Om du deklarerar att den associativa arrayen är av typen Array, kan du inte använda en objektlitteral för att initialisera den. I följande exempel skapas en associativ array med namnet
monitorInfo
med hjälp av konstruktorn Array, och nycklar med namnen
type
och
resolution
läggs till tillsammans med respektive värden:
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
Det finns ingen fördel med att använda kontruktorn Array för att skapa en associativ array. Du kan inte använda egenskapen
Array.length
eller någon annan metod för klassen Array med associativa arrayer, även om du använder konstruktorn Array eller datatypen Array. Konstruktorn Array fungerar bäst när du använder den för att skapa indexerade arrayer.