2010-05-27 18 views
25

quiero definir una matriz asociativa como estoDefinir matriz asociativa de matrices

var theVar = [ 
    { "100", [0, 1, 2] }, 
    { "101", [3, 4, 5] } 
] 

Esencialmente Quiero ser capaz de acceder a una serie de tres números, especificando el índice personalizado.

Sin embargo, no importa lo que intento, no puedo hacer que funcione.

Sé que puedo definirla como:

theVar["100"] = [0, 1, 2]; 
theVar["101"] = [1, 2, 3]; 

Pero yo pongo lo demás esto en alguna parte y yo preferiría ser capaz de establecer en un solo estado.

Respuesta

31
theVar = { 
    "100": [0, 1, 2], 
    "101": [3, 4, 5] 
} 

podría hacer el truco. A continuación, puede acceder utilizando theVar["101"] (o theVar[101] para ese asunto).

(Como var es también a keyword en JavaScript, usándolo como un nombre de variable es muy probable que cause problemas.)

+0

Este es * * el camino para crear la JS-versión de una matriz asociativa. Se llama Notación Literal de Objeto. –

+0

necesita una variable después de "var" o cambia el nombre de la matriz a una palabra no reservada – Klaujesi

6

Tener un vistazo a la sintaxis JSON, creo que podría inspirar a la construcción de las estructuras de datos de una manera que sea flexible, correcta y compleja como lo desee.

This página tiene mucha información y ejemplos que son útiles para usted.

Por ejemplo vistazo a esto:

var employees = { "accounting" : [ // accounting is an array in employees. 
            { "firstName" : "John", // First element 
             "lastName" : "Doe", 
             "age"  : 23 }, 

            { "firstName" : "Mary", // Second Element 
             "lastName" : "Smith", 
             "age"  : 32 } 
            ], // End "accounting" array.         
        "sales"  : [ // Sales is another array in employees. 
            { "firstName" : "Sally", // First Element 
             "lastName" : "Green", 
             "age"  : 27 }, 

            { "firstName" : "Jim", // Second Element 
             "lastName" : "Galley", 
             "age"  : 41 } 
            ] // End "sales" Array. 
       } // End Employees 
+6

Esto no es JSON. Esta es la notación literal de objetos: JSON es un ** subconjunto ** de esto. La primera premisa de poder llamar a cualquier cosa JSON es que está contenida en ** cadena **. ;) –

+0

Me parece JSON. Los nombres de propiedad deben ser cadenas para ser JSON adecuado, pero los valores no. ¿O hay algo más que quieres decir? – rob

+1

Eche un vistazo aquí: http://stackoverflow.com/questions/2904131/what-is-the-difference-between-json-and-object-literal-notation –

Cuestiones relacionadas