Meerdimensionale arrays in JavaScript
Dit verhaal veronderstelt een zekere bekendheid met (3e generatie-) programmeertalen zoals Fortran, Pascal en C.
Variabelen in JavaScript zijn 'untyped'. Ze zijn niet aanwijsbaar als getal, string of pointer naar een object. Javascript behandelt alle data als string, tenzij uit de context blijkt dat de data anders geïnterpreteerd moeten worden.
Één van de datastructuren in JavaScript is de Array. Dat is een lijst met gegevens met een naam en een index. Anders dan de meeste andere programmeer- en scripttalen mag elk element in de lijst van een ander type zijn. Het ene element kan een string zijn, het volgende een getal (Number-object), dan weer een Image-object, enzovoort.
Deze aanpak maakt dat arrays in JavaScript heel flexibel inzetbaar zijn, maar ook dat JavaScript niet
geschikt is voor het uitvoeren van groot en zwaar rekenwerk.
Meerdimensionale arrays (dus met meerdere indices bij elk element, onmisbaar bij grote berekeningen) zijn
in JavaScript niet gedefiniëerd. Er zijn echter situaties denkbaar waarbij meerdimensionale arrays
handig zouden kunnen zijn. Zo bestaan er versies van de spelletjes Boter-Kaas-en-Eieren en Reversi, die
geheel in JavaScript zijn geschreven en die twee-dimensionale arrays gebruiken.
Op deze bladzijde wordt beschreven hoe je meer-dimensionale arrays kunt maken en gebruiken in JavaScript. Om het een beetje begrijpelijk te houden wordt er gewerkt met twee-dimensionale arrays.
- Zoals hierboven beschreven kan elk element van een array een datastructuur bevatten. Een element van
een array kan dus zelf ook een array zijn.
En dat is nou het trucje om meer-dimensionale array te maken. - Een 3x3 array (matrix) definieer je als volgt:
var A = new Array(3);
A[0] = new Array(3);
A[1] = new Array(3);
A[2] = new Array(3);| 1 2 3 | Voorbeeld: De matrix B = | 4 5 6 | definiëer je met: | 7 8 9 | var B = new Array(3);
B[0] = new Array(1,2,3);
B[1] = new Array(4,5,6);
B[2] = new Array(7,8,9); - Om te refereren aan een array-element noem je beide indices:
var x = B[rij][kolom];
Er geldt dus: B[0][0] == 1; B[0][1] == 2; B[1][0] == 4; enz.
- Op deze manier kun je arrays bouwen met net zoveel dimensies als je wilt.
Als het aantal indices groter wordt dan twee, wordt het echter onoverzichtelijk. Dat wordt dan ook niet aangeraden. Als je meer dimensies nodig hebt dan twee kun je beter een object gebruiken. Die benadering is gekozen in de items over Lineaire Algebra. Zie de rubriek "Rekenen", elders op deze site. - Meer-dimensionale arrays in JavaScript zijn niet noodzakelijk vierkant. Rechthoekig (bijv. 4 x 3 of 2 x 5) kan ook. Voor het werken met eenvoudige lineaire programmeringsproblemen kan dat handig zijn.
Opmerking:
Meer informatie over het gebruiken van arrays vind je in het item Werken met Arrays.