2010-07-15 3 views
1

Это тривиально, я знаю, но я так привык к языкам ООП. Я пытаюсь понять, как записать каждое имя/значение в любом одно предупреждение или много, только так я могу проверить данныеЗапишите имя и значение из словаря

var dCookieNameValuePairs = {}; 

for (i = 0; i < cookieValues.length; i++) 
{ 
    var akeyValuePair = aCookieValues[i].split("="); 
    dCookieNameValuePairs[keyValuePair[0]] = keyValuePair[1]; 
} 

// display each name value pair testing 
for (i = 0; i < dCookieNameValuePairs.length; i++) 
{ 
    alert("Name: " + dCookieNameValuePairs[] + "Value: " + 
} 

Я застрял на второй цикл ... Я не уверен, как итерации через словарь, а затем сосредоточьтесь на каждом имени/значении, чтобы переплести его обратно.

ответ

3

Вы хотите использовать for..in для перечисления через словарь/карту.

for (var prop in dCookieNameValuePairs) { 
    if (dCookieNameValuePairs.hasOwnProperty(prop)) { 
     alert(dCookieNameValuePairs[prop]) 
    } 
} 

Возможно, у меня есть опечатка. Используйте только .length, когда вы имеете дело с массивом [] или настраиваемым объектом, подобным массиву, который вы определили для заполнения .length.

+0

Спасибо, я не использовал много JS, поэтому я никогда не использовал цикл for в JS. Теперь имеет смысл. – PositiveGuy

1
for (i in dCookieNameValuePairs) { 
    alert("Name: " + i + " Value: " + dCookieValuePairs[i]); 
} 

Смотрите «JavaScript не поддерживает ассоциативные массивы» раздел this page для более подробной информации.

Если вам не нужен ассоциативный массив, вы можете вместо этого ввести ключи и значения в массив объектов. Таким образом, ваш первый цикл будет выглядеть примерно так:

for (i = 0; i < cookieValues.length; i++) { 
    var akeyValuePair = cookieValues[i].split("="); 
    dCookieNameValuePairs.push({key: akeyValuePair[0], value: akeyValuePair[1]}); 
} 
Смежные вопросы