Cette méthode guidera à travers les propriétés des objets et de les écrire sur la console avec tiret de plus en plus:
function enumerate(o,s){
//if s isn't defined, set it to an empty string
s = typeof s !== 'undefined' ? s : "";
//iterate across o, passing keys as k and values as v
$.each(o, function(k,v){
//if v has nested depth
if(typeof v == "object"){
//write the key to the console
console.log(s+k+": ");
//recursively call enumerate on the nested properties
enumerate(v,s+" ");
} else {
//log the key & value
console.log(s+k+": "+String(v));
}
});
}
Il suffit de passer l'objet vous voulez itérer:
var response = $.ajax({
url: myurl,
dataType: "json"
})
.done(function(a){
console.log("Returned values:");
enumerate(a);
})
.fail(function(){ console.log("request failed");});
Aussi je suppose que alertait 'n' est pas entiérement correcte . Au moins, il pourrait être 'n.name' – Eugene
@Eugene: Je ne comprends pas votre point. Chaque fonction prend un tableau ou un objet comme premier argument et une fonction comme seconde. Cette fonction reçoit calld pour chaque élément du tableau/chaque propriété de l'objet. Chaque fois que la fonction est appelée, elle obtient l'indice et la valeur/nom et la valeur passés en arguments. Dans mon exemple, le paramètre "n" correspond aux deux chaînes "John" et "JS". La propriété "name" serait "indéfinie". –
Oui. J'avais tort ici. D'une manière ou d'une autre j'ai pensé, que chaque propriété dans l'objet est un autre objet avec par exemple le nom de propriété qui est une chaîne. De cource tout cela est faux. Désolé. :) – Eugene