2010-09-30 10 views
17

Tengo un cuadro de texto de autocompletar en el que los usuarios pueden escribir un código de elemento y deben averiguar cuál es el número de identificación de ese código de elemento en javascript.Sintaxis eficiente para rellenar una matriz asociativa javascript

Una matriz asociativa es la manera que me imagino que se debe hacer, pero el siguiente parece un poco largo aliento y espero que alguien tiene una mejor manera de hacerlo o abreviada de lo que tengo a continuación:

var itemIds = new Array(); 
itemIds["item1"] = 15; 
itemIds["item2"] = 40; 
itemIds["item3"] = 72; 
... 

function getItemId(code){ 
    return itemIds[code]; 
} 
+1

No es necesario declarar 'itemIds' como objeto' Array'. Después de todo, solo está agregando propiedades a un objeto. Dado que el objeto JavaScript se puede ver como un 'contenedor para pares clave-valor', cualquier objeto JavaScript lo hará. – smwikipedia

Respuesta

21

Lo que estás haciendo no es una matriz, es un objeto (los objetos en JavaScript son el equivalente de las matrices asociativas en PHP).

Puede utilizar JavaScript objeto de sintaxis literal:

var itemIds = { 
    item1: 15, 
    item2: 40, 
    item3: 72 
}; 

miembros de objetos de JavaScript se puede acceder a través de la notación de puntos o subíndice, así:

itemIds.item1; 
itemIds['item1']; 

Tendrá que utilizar el segundo opción si tiene el nombre de miembro como una cadena.

+0

Guau, esta es una gran respuesta, gracias por proporcionarnos los ejemplos. – Jake

2

Trate de usar notación literal de objetos para especificar su búsqueda, tal como esto:

var itemIds = { 
    "item1" : 15, 
    "item2" : 40 
    ... 
}; 

acceso debería seguir trabajando de esta manera:

var item1Value = itemIds["item1"]; 
+2

Arg ... No fui lo suficientemente rápido. – some

+1

Técnicamente, JSON es el uso de objetos JavaScript y literales de matriz para el intercambio de datos; lo que se muestra es un objeto literal. – Skilldrick

+0

Oh, asumí desde el bit "Notación" en el nombre que definió la sintaxis. Objeto Literal es! –

Cuestiones relacionadas