Today I've heard that it's possible to create a multi - dimensional array in js using this syntax:
var a = new Array(3,3);
a[2][2] = 2;
alert(a[2][2])
However this doesn't work in opera. Am I wrong somewhere?
Today I've heard that it's possible to create a multi - dimensional array in js using this syntax:
var a = new Array(3,3);
a[2][2] = 2;
alert(a[2][2])
However this doesn't work in opera. Am I wrong somewhere?
Yes, you are wrong somewhere. var a = new Array(3,3);
means the same as var a = [3,3];
. It creates an array with two members: the Number 3
and the Number 3
again.
The array constructor is one of the worst parts of the JavaScript language design. Given a single value, it determines the length of the array. Given multiple values, it uses them to initialise the array.
Always use the var a = [];
syntax. It is consistent (as well as being shorter and easier to read).
There is no short-cut syntax for creating an array of arrays. You have to construct each one separately.
var a = [
[1,2,3],
[4,5,6],
[7,8,9]
];
The code you posted makes an array consisting of two integers. You're then trying to treat an integer as an array.
mv = new Array();
mv[0] = new Array();
mv[0][0] = "value1-1";
mv[0][1] = "value1-2";
mv[1] = new Array();
mv[1][0] = "value2-1";
mv[1][1] = "value2-2";
There is no way to directly instantiate a multidimensional array.
you want to create an array of arrays, but you're creating an array with 2 elements:
var a = new Array(3,3);
// a = [3,3]
if you want to create a multidimensional array, you have to think in terms of array of arrays.
this way, a 2 dimensional array (or matrix) would be defined as :
var a = [[],[]];//or var a = new Array([],[]);
//or if you want to initialize the matrix :
var b = [
[1,2],
[3,4]
];