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"