2009-07-08 11 views

risposta

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

each

+0

Inoltre immagino, che avvisando 'n' non è corretto intirely . Almeno potrebbe essere 'n.name' – Eugene

+2

@Eugene: Non capisco il tuo punto. Ogni funzione accetta un array o un oggetto come primo argomento e una funzione come secondo. Questa funzione ottiene call per ogni elemento nell'array/ogni proprietà nell'oggetto. Ogni volta che viene chiamata la funzione, ottiene l'indice e il valore/nome e valore passati come argomenti. Nel mio esempio il parametro "n" sono le due stringhe "John" e "JS". La proprietà "nome" sarebbe "indefinita". –

+0

Sì. Ho sbagliato qui. In qualche modo ho pensato che ogni proprietà dell'oggetto è un altro oggetto con, per esempio, il nome della proprietà che è una stringa. Di tutto ciò è sbagliato. Mi dispiace. :) – Eugene

51

È possibile utilizzare each per gli oggetti troppo e non solo per gli array:

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

Simply Awesome Thanks @gumbo :) –

8

Questo metodo vi guiderà attraverso le proprietà degli oggetti e scriverli alla console con l'aumentare trattino:

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)); 
     } 
    }); 
} 

Basta passarlo l'oggetto si vuole scorrere:

var response = $.ajax({ 
    url: myurl, 
    dataType: "json" 
}) 
.done(function(a){ 
    console.log("Returned values:"); 
    enumerate(a); 
}) 
.fail(function(){ console.log("request failed");}); 
+0

Utilizzo di questo quando un valore è null errori con" Uncaught TypeError: Impossibile leggere la proprietà 'length' di null " – JustinStolle

3

tardi, ma può essere fatto utilizzando Object.keys come,

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>

Problemi correlati