2011-02-10 11 views
5

Hoy he oído que es posible crear un multi - dimensional array en js mediante la siguiente sintaxis:Javascript a crear la sintaxis de matrices multidimensionales

var a = new Array(3,3); 
a[2][2] = 2; 
alert(a[2][2]) 

Sin embargo, esto no funciona en la ópera. ¿Me equivoco en algún lado?

+2

Esta es una de las razones por las ** ** no usar 'new Array()'. Si pasa solo un argumento, de hecho establece la longitud de la matriz a ese argumento. Pero si pasa más de uno, genera una matriz que contiene esos elementos. No es necesario usar 'Array()', use notación literal en lugar de '[]'. –

Respuesta

7

Sí, estás equivocado en alguna parte. var a = new Array(3,3); significa lo mismo que var a = [3,3];. Crea una matriz con dos miembros: el número 3 y el número 3 nuevamente.

El constructor de matriz es una de las peores partes del diseño del lenguaje JavaScript. Dado un valor único, determina la longitud de la matriz. Dado valores múltiples, los usa para inicializar la matriz.

Utilice siempre la sintaxis var a = [];. Es consistente (además de ser más corto y más fácil de leer).

No hay una sintaxis de atajo para crear una matriz de matrices. Tienes que construir cada uno por separado.

var a = [ 
      [1,2,3], 
      [4,5,6], 
      [7,8,9] 
     ]; 
+2

¿cuál es la respuesta? –

+0

Creo que OP intentaba crear una matriz multidimensional con esa sintaxis. EDITAR: * Este comentario ya no es relevante. * – user113716

+0

Tienes razón. Me dijeron que crea una matriz multi-tenue. Gracias por la buena y clara respuesta – Dan

2

El código que ha publicado forma una matriz que consta de dos enteros. Entonces estás tratando de tratar un entero como una matriz.

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"; 

No hay manera para instanciar directamente una matriz multidimensional.

+0

En el segundo bloque, ¿no te refieres a 'mv [1] [0]' y 'mv [1] [1]'? – JLewkovich

+0

@JL Sí, corregido –

+0

El único script que me lo resolvió con 3 dimensiones ... Thx. – JanBorup

0

desea crear una matriz de matrices, pero va a crear una matriz con 2 elementos:

var a = new Array(3,3); 
// a = [3,3] 

si desea crear una matriz multidimensional, hay que pensar en términos de variedad de matrices.
esta manera, un 2 matriz unidimensional (o matriz) se definiría como:

var a = [[],[]];//or var a = new Array([],[]); 
//or if you want to initialize the matrix : 
var b = [ 
    [1,2], 
    [3,4] 
]; 
Cuestiones relacionadas