Assosiative Array

Tabeller implementert som Objekt med egenskaper.


Dette er mest aktuelt med to-dimensjonale tabeller, så vi bruker eksemplet med bruktbiler fra side 99 i læreboken:

bruktbiler: (Se side 99)
Volvo Blå 110
Fiat Rød 150
Lada Rustrød 68
Renault Hvit 100

Jeg gjentar det viktig tipset:

Ikke tegn tabeller slik som over og i boken,
tegn dem slik at strukturen (ytre/indre, kolonne/rad) kommer tydelig frem,
slik jeg har vist under:

Volvo
Blå
110
Fiat
Rød
150
Lada
Rustrød
68
Renault
Hvit
100

Med assosiative array kan vi holde hver bil samlet i en celle istedenfor på tvers av celler slik vi gjorde i Array.

Den store fordelen er at vi indekserer med egenskapsnavn (merke, farve, pris) istedenfor heltall!

Kan deklarere alt på en gang, slik:

var bruktbiler: Array = [ { merke: "Volvo",   farve: "Blå",     pris: 110},

                          { merke: "Fiat" ,   farve: "Rød",     pris: 160},

                          { merke: "Lada" ,   farve: "Rustrød", pris: 68 },

                          { merke: "Renault", farve: "Hvit",    pris: 100} ];

Endre og hente innhold:

bruktbiler[2]["farve"] = "Gul";	//Endrer farven på Lada til Gul
eller
bruktbiler[2].farve = "Gul";
// Legge inn ny bil :
var ny: Object = new Object();

ny.merke="Ford";

ny.farve="Grå";

ny.pris=75;
bruktbiler.push(ny);

Liste ut innhold:

var i: int;



for(i=0;i<bruktbiler.length;i++){

	trace(bruktbiler[i].merke);

	trace(bruktbiler[i].farve);

	trace(bruktbiler[i].pris);

}

Finne sum: (Verdien av lager)

var totalverdi: Number = 0.0;

for( i = 0; i < bruktbiler.length; i++){

   totalverdi += bruktbiler[i].pris;

}

trace("Verdien av alle bilene: " + totalverdi);

Sortere:

Den innebygde Array-metoden sortOn() sorterer på den egenskapen vi ønsker:

bruktbiler.sortOn("merke");

Søke opp verdier:

Med flerdimensjonale tabeller må vi ofte lage søkefunksjonen, eksempelvis noe slikt:
var sokeord: String = "Lada";
var funnet: Boolean = false; 	//Ikke funnet så langt
var indeks: int = -1;
for (i=0;i<bruktbiler.length;i++) {

   if(bruktbiler[i].merke==sokeord) {

	funnet = true;

	indeks = i;

   }//if

}//for
if( indeks < 0) {

   trace("Ingen " + sokeord + "funnet!");

} else {

   trace("Fant " + sokeord + " på indeks " + indeks);

}
Vil skrive ut:  "Fant Lada på indeks 2"