woensdag 1 augustus 2012

JavaScript voor mensen, hobbits en elven - Deel 21: Lijstjes in lijstjes; Bomen te hulp!


Het eerste slagveld

“Objecten worden pas praktisch wanneer ze overerven.”
                                                                                    - Sam Rain
Wie als dappere elf de pijlen richt op Olifaunts, zal de magische krachten van ‘arrays’ waarderen. Deze structuur is in JavaScript een machtig wapen, terwijl tovenaars van andere talen soms moeten tandenknarsen. Arrays in JavaScript kunnen, naast oneindig genummerd zijn (dynamisch), geen verplichte volgorde (sparse) van elementen, een mix bevatten van allerlei soorten elementen (multi-porpose), een mogelijkheid tot ‘tekst’-labels (associatieve arrays), óók andere arrays bevatten. Jazeker, lijstjes van lijstjes; multi-dimensionale arrays.
Een array met ‘meerdere dimensies’ kan even vraagtekens oproepen bij de onervaren hobbit. Eén van de meest praktische structuren in elvenmagie is (hoe kan het ook anders) de boomstructuur. Een boomstructuur begint bij de stam (‘root’) om vervolgens takken te vormen (‘Child/branch/dimensie) die weer uitmonden in andere takken of bladeren (nodes). Wie begint bij de stam kan zo bij ieder blad komen.
 
Midden-Aarde staat voor bomen van allerlei soorten (webpagina’s, pdf-jes, mp3 en zelfs de gegevens die van en naar het Internet gestuurd worden). Wie bomen respecteert, zal weinig moeite hebben ze te begrijpen.
Een tabel is beter te zien als een boom met takken van rijen en kolommen als bladeren. Iedere tak is een ‘nieuwe’ array! Hoewel het in het eerste opzicht aanvoelt als Orcisch is het een kwestie van spelen voor hobbits en ijverige elven. Mensen weten als geen ander hoe ze van bomen wapens moeten maken, zoals speren en katapulten!
Met een beetje JavaScript elvenmagie, maken we zo een boom waar onze vrienden kunnen uitrusten:
var fellowship = new Array(); /*dit is onze stam*/
fellowship[“tovenaars”]=new Array(); /*een tak voor tovenaars*/
fellowship[“tovenaars”][0]=”Gandalf”; /*0 is het eerste nummer in een genummerd lijstje*/
fellowship[“mensen”]=new Array(); /*een tweede tak, maar voor mensen*/
fellowship[“mensen”][0]=”Aragon”;
fellowship[“mensen”][1]=”Faramir”;
var hobbits = new Array (“Frodo”, “Sam”, “Merrin”, “Peppin”); /*de lijst van hobbits wat makkelijker aangemaakt*/
fellowship[“hobbits”]=hobbits; /*alle hobbits hangen nu aan deze boom!*/
...etc...
Met een boomstructuur kunnen we gerelateerde objecten veel gemakkelijker gebruiken in elvenmagie. Wanneer we alle hobbits willen laten dansen uit de ‘fellowship’, dan hoeven we maar:
Function latenDansen(wezen) { var d; /*een dans-functie*/
 d=wezen+”danst blij in het rond!”;
 return d;
}
var i; var feest;
for (i=0; i<fellowship[“hobbits”].length; i++) /*fellowship [“hobbits”] is een ‘array’, dus kan zo gebruikt worden*/
{
 feest+=latenDansen(fellowship[“hobbits”][i];
}
/*feest bevat nu “Frodo danst blij in het rond! Sam danst... etc”*/
Je mag zoveel takken maken als je wilt – vergeet alleen niet dat je de ‘knoop’ maakt met de spreuk ‘new Array’! Teveel takken? Of toch liever snoeien en knippen? Met ‘delete’ tover je ze zo naar de vergetelheid:
delete fellowship[“mensen”][1]; /*faramir verwijderd*/
delete fellowship[“tovenaars]; /*hele tak tovenaars verwijderd*/

Meer lezen over Programmeren? Klik hier voor de inhoudsopgave van alle artikelen!

Geen opmerkingen:

Een reactie posten