J'essaie de parcourir le tableau json suivant:
{
"id": "1",
"msg": "hi",
"tid": "2013-05-05 23:35",
"fromWho": "[email protected]"
}, {
"id": "2",
"msg": "there",
"tid": "2013-05-05 23:45",
"fromWho": "[email protected]"
}
Et j'ai essayé ce qui suit
for (var key in data) {
if (data.hasOwnProperty(key)) {
console.log(data[key].id);
}
}
Mais pour une raison quelconque, je n'obtiens que la première partie, les valeurs id 1.
Des idées?
javascript
json
Alosyius
la source
la source
Réponses:
Votre JSON devrait ressembler à ceci:
Vous pouvez faire une boucle sur le tableau comme ceci:
Ou comme ceci (suggéré par Eric) soyez prudent avec le support IE
la source
json.forEach(function(obj) { console.log(obj.id); });
Il y a quelques problèmes dans votre code, d'abord votre json doit ressembler à:
Ensuite, vous pouvez itérer comme ceci:
Et cela donne un résultat parfait.
Voir le violon ici: http://jsfiddle.net/zrSmp/
la source
forEach pour une mise en œuvre facile.
la source
essaye ça
la source
Depuis que j'ai déjà commencé à m'y intéresser:
Et cette fonction
Tu peux l'appeler comme ça
Mettre à jour après le commentaire Erics
Comme Eric l'a souligné, une
for in
boucle pour un tableau peut avoir des résultats inattendus . La question référencée a une longue discussion sur les avantages et les inconvénients.Tester avec for (var i ...
Mais il semble que le suivant soit tout à fait sauvé:
Bien qu'un test dans Chrome ait eu le résultat suivant
Tester avec
.forEach()
Au moins dans Chrome 30, cela fonctionne comme prévu
Liens
for in
au mdnfor in
moins mauvaisla source
for ... in
boucles ne doivent pas être utilisées pour les tableauxfor each
.for ... in ...
est une construction de langage pour énumérer les clés d'objet dans un ordre arbitraire. Ce n'est pas la bonne construction pour un tableau.Ça fonctionne. Je viens d'ajouter des crochets aux données JSON. Les données sont:
Et la boucle est:
la source
Il doit s'agir d'un tableau si vous souhaitez effectuer une itération dessus. Vous avez très probablement disparu
[
et]
.Découvrez ce jsfiddle: http://jsfiddle.net/lpiepiora/kN7yZ/
la source
Un peu tard mais j'espère pouvoir aider les autres: D
votre json doit ressembler à quelque chose que Niklas a déjà dit. Et puis voilà:
si vous avez un tableau multidimensionnel, voici votre code:
la source
Eh bien, tout ce que je peux voir, c'est que vous avez deux objets JSON, séparés par une virgule. Si les deux étaient à l'intérieur d'un tableau (
[...]
), cela aurait plus de sens.Et, s'ils sont à l'intérieur d'un tableau, alors vous utiliseriez simplement le type de boucle standard "for var i = 0 ...". En l'état, je pense qu'il va essayer de récupérer la propriété "id" de la chaîne "1", puis "id" de "hi", et ainsi de suite.
la source
Une solution courte utilisant
map
et une fonction flècheEt pour couvrir les cas où la propriété
"id"
n'est pas présente, utilisezfilter
:la source
oh mon ... pourquoi tout le monde rend cela si difficile !!?
votre extrait de code doit être un peu développé, et il doit en être ainsi pour être correctement json. remarquez que j'inclus juste l'attribut de nom de tableau "item"
votre script java est simplement
la source