2011-05-25 5 views
4

J'ai écrit un objet, il a 4 clés et valeurs. Comment puis-je obtenir les clés et les valeurs séparément en utilisant une boucle for?Comment obtenir de la valeur à partir de l'objet?

J'ai essayé le code ci-dessous, mais pas de chance.

var timeObject = { 
    getNewYorkLocalTime: 'getTime.php?lat=40.7143528&lan=-74.0059731', 
    getLondonLocalTime: 'getTime.php?lat=51.5001524&lan=-0.1262362', 
    getChennaiLocalTime: 'getTime.php?lat=13.060422&lan=80.249583', 
    getBangaloreLocalTime: 'getTime.php?lat=12.9715987&lan=77.5945627' 
} 

for (var x in timeObject) { 
    alert(timeObject[x].value); 
} 

Quelqu'un peut-il m'aider? J'utilise jQuery dans cette page, donc une solution jQuery est ok aussi.

Répondre

0

Vous l'avez presque compris. Vous n'avez pas besoin du supplément value à la fin.

Code de travail

var timeObject = { 
    getNewYorkLocalTime: 'getTime.php?lat=40.7143528&lan=-74.0059731', 
    getLondonLocalTime: 'getTime.php?lat=51.5001524&lan=-0.1262362', 
    getChennaiLocalTime: 'getTime.php?lat=13.060422&lan=80.249583', 
    getBangaloreLocalTime: 'getTime.php?lat=12.9715987&lan=77.5945627' 
} 

for (var x in timeObject) { 
    console.log(timeObject[x]); 
} 
1

Je pense que vous Sholu faire quelque chose comme ceci:

var timeObject = { 
    getNewYorkLocalTime: 'getTime.php?lat=40.7143528&lan=-74.0059731', 
    getLondonLocalTime: 'getTime.php?lat=51.5001524&lan=-0.1262362', 
    getChennaiLocalTime: 'getTime.php?lat=13.060422&lan=80.249583', 
    getBangaloreLocalTime: 'getTime.php?lat=12.9715987&lan=77.5945627' 
} 

for (var x in timeObject) { 
    //use this check to avoid messing up with prototype properties 
    if (timeObject.hasOwnProperty(x)) { 
     alert(timeObject[x]); 
    } 
} 
+0

autant que je sache, les propriétés de prototype ne seront pas applicables ici puisque vous travaillez avec un objet et non un tableau natif. – JohnP

+0

@JohnP Sauf si vous avez défini 'Object.prototype.contains' ou quelque chose comme ça. – lonesomeday

+0

@JohnP Je pense que c'est toujours mieux si vous filtrez les chaînes de prototypes si vous n'en avez pas besoin. –

2

En jQuery, vous pouvez parcourir avec $.each.

$.each(timeObject, function(key, value) { 

}); 

Cependant, la boucle est pas loin:

for (var x in timeObject) { 
    alert('key: ' + x + ' value=' + timeObject[x]); 
} 

Dans cette boucle for..in, x est le nom de la clé. Vous pouvez ensuite y accéder sur l'objet timeObject en utilisant l'opérateur standard. Voir the MDC documentation for for..in.

0

Si c'est toujours le cas - Object.keys() peut vous aider. Démo: http://jsfiddle.net/SK4Eu/

var timeObject = { 
    getNewYorkLocalTime: 'getTime.php?lat=40.7143528&lan=-74.0059731', 
    getLondonLocalTime: 'getTime.php?lat=51.5001524&lan=-0.1262362', 
    getChennaiLocalTime: 'getTime.php?lat=13.060422&lan=80.249583', 
    getBangaloreLocalTime: 'getTime.php?lat=12.9715987&lan=77.5945627' 
} 

var keys = Object.keys(timeObject), 
    keysLength = keys.length; 

for (var i = 0; i < keysLength; i++) { 
    alert(timeObject[keys[i]]); 
} 
Questions connexes