2010-03-26 12 views
6

Tengo un aMatriz simulada sencillo con dos elementos:javascript "asociativa" de acceso a conjunto

bowl["fruit"]="apple"; 
bowl["nuts"]="brazilian"; 

puedo acceder al valor con un evento como este:

onclick="testButton00_('fruit')">with `testButton00_` 

function testButton00_(key){ 
    var t = bowl[key]; 
    alert("testButton00_: value = "+t); 
} 

Sin embargo cada vez que intento acceder el aarray del código con una clave que no es más que una cadena no explícita no me define. De alguna manera tengo que pasar el parámetro con la 'clave' escapada. ¿Algunas ideas? tia.

+0

debe usar el formato de código de stackoverflow – douwe

+1

Quizás cp deba terminar el trabajo de edición; Actualmente, varias personas intentan editarlo y parece haber algún desacuerdo sobre lo que CP pretendía decir. –

+0

¿Cómo se define la matriz? –

Respuesta

18

La clave puede ser una cadena calculada dinámicamente. Da un ejemplo de algo que pasas que no funciona.

dado:

var bowl = {}; // empty object 

Usted puede decir:

bowl["fruit"] = "apple"; 

O:

bowl.fruit = "apple"; // NB. `fruit` is not a string variable here 

O incluso:

var fruit = "fruit"; 
bowl[fruit] = "apple"; // now it is a string variable! Note the [ ] 

O si realmente quiere:

bowl["f" + "r" + "u" + "i" + "t"] = "apple"; 

Aquellos todos tienen el mismo efecto sobre el objeto bowl. Y a continuación, puede utilizar los patrones correspondientes para recuperar valores:

var value = bowl["fruit"]; 
var value = bowl.fruit; // fruit is a hard-coded property name 
var value = bowl[fruit]; // fruit must be a variable containing the string "fruit" 
var value = bowl["f" + "r" + "u" + "i" + "t"]; 
0

No estoy seguro de que te entiendo, usted puede asegurarse de que la clave es una cadena como esta

if(!key) { 
    return; 
} 
var k = String(key); 
var t = bowl[k]; 

O puede comprobar si la clave existe:

if(typeof(bowl[key]) !== 'undefined') { 
    var t = bowk[key]; 
} 

Sin embargo, no creo que haya publicado el código que no funciona?

0

Puede usar JSON si no quiere escapar de la llave.

var bowl = { 
    fruit : "apple", 
    nuts : "brazil" 
}; 

alert(bowl.fruit); 
+2

Eso no es JSON. –

+1

Eso es un objeto literal. JSON es un formato de datos. –

Cuestiones relacionadas