2010-07-15 5 views
1

Ceci est trivial je sais, mais je suis tellement habitué aux langues OOP. J'essaie de comprendre comment écrire dans l'une alerte ou plusieurs chaque nom/valeur, juste que je peux vérifier les donnéesEcrivez le nom et la valeur du dictionnaire

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: " + 
} 

Je suis coincé à la seconde boucle ... Je suis Vous ne savez pas comment parcourir le dictionnaire, puis vous concentrer sur chaque nom/valeur pour le recracher.

Répondre

3

Vous souhaitez utiliser for..in pour énumérer dans un dictionnaire/une carte.

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

Je peux avoir typo'd. Utilisez uniquement .length lorsque vous traitez un tableau [] ou un objet de type tableau personnalisé que vous avez défini comme ayant .length rempli.

+0

Merci, je n'ai pas beaucoup utilisé JS alors vraiment jamais utilisé de boucle pour JS pour le moment. Ça a du sens maintenant. – PositiveGuy

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

Voir la section « JavaScript ne prend pas des tableaux Associatif » de this page pour plus de détails.

Si vous n'avez pas besoin d'un tableau associatif, vous pouvez placer les clés et les valeurs dans un tableau d'objets à la place. Donc, votre première boucle ressemblerait à quelque chose comme ceci:

for (i = 0; i < cookieValues.length; i++) { 
    var akeyValuePair = cookieValues[i].split("="); 
    dCookieNameValuePairs.push({key: akeyValuePair[0], value: akeyValuePair[1]}); 
} 
Questions connexes