586 votes

Comment itérer sur une structure JSON ?

J'ai la structure JSON suivante :

[{ "id":"10", "class": "child-of-9" }, { "id": "11", "classd": "child-of-10" }]

Comment puis-je l'itérer en utilisant JavaScript ?

1 votes

7 votes

"jquery ou javascript" ? jquery est écrit en javascript !

9 votes

Ce devrait être "jQuery ou pure JavaScript".

567voto

Your Friend Ken Points 2615
var arr = [ {"id":"10", "class": "child-of-9"}, {"id":"11", "class": "child-of-10"}];

for (var i = 0; i < arr.length; i++){
  document.write("<br><br>array index: " + i);
  var obj = arr[i];
  for (var key in obj){
    var value = obj[key];
    document.write("<br> - " + key + ": " + value);
  }
}

note : la méthode for-in est cool pour les objets simples. Elle n'est pas très intelligente à utiliser avec un objet DOM.

7 votes

N'oubliez pas de vérifier à l'intérieur de votre for key in obj boucle qui obj.hasOwnProperty(key) --- sinon un jour vous pourriez trouver d'autres clés qui se fraient un chemin dans obj que vous ne voulez pas, si quelqu'un étend le prototype par exemple...

0 votes

Bonjour, je voudrais juste savoir si je veux utiliser ce système pour obtenir un tableau json distant, comment dois-je faire ? S'il vous plaît, donnez-moi quelques conseils !

0 votes

@AlexanderSupertramp il est défini en utilisant la notation littérale de tableau avec des objets en notation littérale d'objet. En JavaScript, les tableaux sont essentiellement aussi des objets. Je me réfèrerais donc toujours à "arr is set" en utilisant JSON.

454voto

Marquis Wang Points 4327

Tiré de Documentation sur jQuery :

var arr = [ "one", "two", "three", "four", "five" ];
var obj = { one:1, two:2, three:3, four:4, five:5 };

jQuery.each(arr, function() {
  $("#" + this).text("My id is " + this + ".");
  return (this != "four"); // will stop running to skip "five"
});

jQuery.each(obj, function(i, val) {
  $("#" + i).append(document.createTextNode(" - " + val));
});

163 votes

Cette syntaxe est très déroutante. Pouvez-vous l'expliquer ? Pouvez-vous également fournir le résultat ?

148 votes

La réponse aurait dû être donnée en JavaScript, et non en JQuery.

23 votes

@WayneHartman Je comprends votre point de vue, mais la question originale dit bien "jquery ou javascript". Il semble que l'erreur était de ne pas avoir de balise jquery sur la question.

116voto

Utilisez pour...de :

var mycars = [{name:'Susita'}, {name:'BMW'}];

for (var car of mycars) 
{
  document.write(car.name + "<br />");
}

Résultat :

Susita
BMW

7 votes

La Susita est une variable dépendante de la culture, n'est-ce pas ? :-)

3 votes

Exact, une variable de premier niveau, comme BMW ;-)

12 votes

Il s'agit d'un tableau ordinaire, pas de JSON.

88voto

abdulbasit Points 246

Faites-moi savoir si cela n'est pas facile :

var jsonObject = {
  name: 'Amit Kumar',
  Age: '27'
};

for (var prop in jsonObject) {
  alert("Key:" + prop);
  alert("Value:" + jsonObject[prop]);
}

23 votes

Votre jsonObject n'est pas un véritable objet JSON. C'est un objet javascript. C'est pourquoi cela fonctionne. Cependant, si quelqu'un a un objet JSON, il peut le convertir en un objet JS et ensuite utiliser votre méthode. Pour convertir un objet JSON en objet JS, utilisez jsObject = JSON.parse(jsonObject) ;

1 votes

Si vous avez acquis vos données via jQuery.getJSON(), cela fonctionne parfaitement.

40voto

Swapnil Godambe Points 816

Si c'est votre dataArray :

var dataArray = [{"id":28,"class":"Sweden"}, {"id":56,"class":"USA"}, {"id":89,"class":"England"}];

alors :

$(jQuery.parseJSON(JSON.stringify(dataArray))).each(function() {  
         var ID = this.id;
         var CLASS = this.class;
});

0 votes

Meilleure réponse en utilisant JQuery. J'encode les données depuis le backend en utilisant AJAX, donc je n'ai pas utilisé la fonction 'stringify'. Le code est clair et beau !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X