使用jQuery迭代JavaScript对象的属性

有没有一个jQuery的方式来执行迭代对象的成员,如在:

for (var member in obj) { ... } 

我只是不喜欢这从我可爱的jQuery符号中突出!

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

您也可以使用each对象而不仅仅是数组:

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

此方法将遍历对象属性并将其写入控制台,并使其缩进:

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

只要传递你想要迭代的对象:

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

晚了,但可以通过使用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>