2009-07-08 7 views

Antwort

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

each

+0

auch, dass ich denke, getan werden, alarmieren 'n' ist nicht korrekt intirely . Zumindest könnte es 'n.name' sein – Eugene

+2

@Eugene: Ich verstehe Ihren Standpunkt nicht. Jede Funktion nimmt ein Array oder Objekt als erstes Argument und eine Funktion als zweites Argument. Diese Funktion wird für jedes Element im Array/jede Eigenschaft im Objekt aufgerufen. Jedes Mal, wenn die Funktion aufgerufen wird, werden der Index und der Wert/Name und Wert als Argumente übergeben. In meinem Beispiel sind die Parameter "n" die zwei Zeichenfolgen "John" und "JS". Die Eigenschaft "name" wäre "undefiniert". –

+0

Ja. Ich habe mich hier geirrt. Irgendwie dachte ich, dass jede Eigenschaft in Objekt ein anderes Objekt mit zum Beispiel Eigenschaftsname ist, der eine Zeichenkette ist. Alles in allem ist das falsch. So leid. :) – Eugene

51

können Sie each für Objekte verwenden zu und nicht nur für Arrays:

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

Simply Awesome Dank @gumbo :) –

8

Diese Methode wird durch Objekteigenschaften gehen und sich an die Konsole mit zunehmendem Einzug schreiben:

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

Übergeben Sie einfach das Objekt Sie wollen durchlaufen:

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

Verwenden Sie dies, wenn ein Wert Null Fehler mit" Uncaught TypeError: Kann Eigenschaft 'Länge' von Null nicht lesen " – JustinStolle

3

Spät, kann aber mit Object.keys wie

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>