/>

A

reader asked **“Why
are there two types of multidimentional arrays? What is the difference between the **

**(x)(y)**

**and**

**(x,y)**

**notation?”**

** **

Good

question. There are two kinds of multidimensional

arrays, called “**rectangular**” and “**ragged**“. A

rectangular array is, well, rectangular. You

say

DIm

MyArrary(3,2)

and

you get an array with indices:

(0,0)

(0,1) (0,2)

(1,0)

(1,1) (1,2)

(2,0)

(2,1) (2,2)

(3,0)

(3,1) (3,2)

which

makes a nice rectangle. A three-dimensional

array makes a rectangular prism, and so on up into the higher dimensions.

Now,

as I mentioned earlier, JScript does not have multidimensional arrays. A

clever trick to simulate multidimensional arrays is to make an array of arrays:

var

x = new Array(

new

Array(1, 2, 3),

new

Array(4, 5),

new

Array(6, 7, 8, 9));

And

so dereferencing the outer array gives you the inner array, which can then be dereferenced

itself:

print(x[2][0]);

// 6

But

you notice something about the indices if we write them out as before:

[0][0]

[0][1] [0][2]

[1][0]

[1][1]

[2][0]

[2][1] [2][2] [2][3]

The

indices make a ragged pattern, not a straight rectangular pattern.

You

can have ragged higher dimensional arrays as well, though allocating all the sub-arrays

gets to be a royal pain.

There

are often times when you want ragged arrays even in a language that supports rectangular

multi-dimensional arrays, so VBScript supports both. If

you say

MyArray(2,3)

then

you are talking to a rectangular two-dimensional array. If

you say

MyArray(2)(3)

then

you are talking to a one dimensional array that contains another one dimensional array.

Thanks a lot. Too bad you never wrote a vbscript book.

I never did write a VBScript book, but I was the technical editor of "VBScript In A Nutshell, 2nd edition". (And boy, did I earn my fee. The first edition has a LOT of mistakes.)

Hi,

I feel lucky to have found your article "Running Me Ragged " on google today.

I was desperately looking for information on ragged arrays in vbscript.

I was trying to achieve a dynamic 3rd dimension for every 1st dimension element in my 3-dimensional rectangular array but it was just not working and now I know why thanks to your article.

I want to use a ragged 3 dimensional array for the above solution instead but am not sure how.

Would you be able to suggest a few links or a book where I can find an example of the ragged 3 dimensional arrays and how to use them?

PingBack from http://www.aaronpalermo.com/wordpress/archives/11

i need some help..

i wasted a lot of time while searching on the internet about my problem and i am not sure if i am writing on the correct place.

My problem is ;

** i am a vb 6.0 user

i have a 3D-D array

-myArray()

and i want to redim. it but i dont want to use a prism. So ;

i assigned NJ(1)=10 ; NJ(2)=14; NJ(3)=5

NI(1)=10 ; NI(2)=18; NI(3)=5 and i want to redim myarray like ;

myarray(1,NI(1),NJ(1))

myarray(2,NI(2),NJ(2))

myarray(3,NI(3),NJ(3))

for computing economy i dont need want to dim. my array like ; redim myarray(3,14,18)

how can i do that ?

thanks ; Tolga