2009-07-08 8 views

Répondre

203
$.each({ name: "John", lang: "JS" }, function(i, n){ 
    alert("Name: " + i + ", Value: " + n); 
}); 

each

+0

Aussi je suppose que alertait 'n' est pas entiérement correcte . Au moins, il pourrait être 'n.name' – Eugene

+2

@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". –

+0

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

51

Vous pouvez utiliser aussi et non each pour les objets que pour les tableaux:

var obj = { 
    foo: "bar", 
    baz: "quux" 
}; 
jQuery.each(obj, function(name, value) { 
    alert(name + ": " + value); 
}); 
+0

Simply Awesome Merci @ gumbo :) –

8

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");}); 
+0

Utiliser ceci lorsqu'une valeur est nulle erreur avec" Uncaught TypeError: Impossible de lire la propriété 'length' de null " – JustinStolle

3

tard, mais peut être fait en utilisant comme Object.keys,

var a={key1:'value1',key2:'value2',key3:'value3',key4:'value4'}, 
 
    ulkeys=document.getElementById('object-keys'),str=''; 
 
var keys = Object.keys(a); 
 
for(i=0,l=keys.length;i<l;i++){ 
 
    str+= '<li>'+keys[i]+' : '+a[keys[i]]+'</li>'; 
 
} 
 
ulkeys.innerHTML=str;
<ul id="object-keys"></ul>

Questions connexes