2010-03-26 4 views
6

У меня есть простой моделируемой aarray с двумя элементами:JavaScript «ассоциативный» массив доступ

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

я могу получить доступ к значению с событием, как это:

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

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

Однако всякий раз, когда я пытаюсь получить доступ aarray изнутри кода с ключом, который является просто неявной строкой, я получаю undefined. Должен ли я каким-то образом передать параметр с экранированным «ключом». Есть идеи? ТИА.

+0

Вы должны использовать форматирование кода stackoverflow – douwe

+1

Возможно, cp должен завершить задание на редактирование; в настоящее время несколько человек пытаются его отредактировать, и, похоже, есть некоторые разногласия по поводу того, что cp намеревался сказать! –

+0

Как определяется массив? –

ответ

18

Ключ может быть динамически вычисленной строкой. Приведите пример того, что вы передаете, что не работает.

Дано:

var bowl = {}; // empty object 

Вы можете сказать:

bowl["fruit"] = "apple"; 

Или:

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

Или даже:

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

Или, если вы действительно хотите:

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

Те, у всех есть один и тот же эффект на bowl объекта. И тогда вы можете использовать соответствующие шаблоны для извлечения значений:

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

Я не уверен, что понимаю вас, вы можете убедиться, ключ является строкой, как этот

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

Или вы можете проверить, существует ключ:

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

Однако, я не думаю, что вы опубликовали нерабочий код?

0

Вы можете использовать JSON, если вы не хотите скрывать ключ.

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

alert(bowl.fruit); 
+2

Это не JSON. –

+1

Это объект буквальный. JSON - это формат данных. –

Смежные вопросы