2011-01-05 63 views
14

我想通過下面的代碼片段來顯示下面顯示的JS對象,同時需要同時獲取索引鍵以及內部對象。jQuery:正確地循環對象?

我該怎麼做,因爲以下方法不起作用?

對象:

({ prop_1:["1", "2"], 
prop_2:["3", "4"]}) 

我的代碼:

$.each(myObject, function(key,valueObj){ 
    alert(key + "/" + valueObj.toSource()); 
}); 

預期輸出:

prop_1/(["1", "2"]) 

回答

22

你取精的內部對象,valueObj陣列,它只是沒有方法.toSource()(在leas牛逼不跨瀏覽器反正),如果你刪除,你會得到一個警告:

$.each(myObject, function(key,valueObj){ 
    alert(key + "/" + valueObj); 
}); 

You can test it out here,不被拋出,輸出只是:

prop_1/1,2 
prop_2/3,4 

...的Array上的默認.toString()是逗號分隔的列表,所以這就是您看到的alert()。例如,如果你不是做alert(key + "/" + valueObj[0]);,你會看到:

prop_1/1 
prop_2/3 

...所以你可以看到你有你想要的陣列,you can test that here

3

你可以在循環使用爲:

var myObject = ({ prop_1:["1", "2"], prop_2:["3", "4"]}) 
    for (var key in myObject) { 
     if (myObject.hasOwnProperty(key)) { 
      alert(key + "/" + myObject[key]); 
     } 
    } 
+1

這將包括功能一樣,所以一定要與'typeof'來過濾他們,如果你不希望他們。 (JavaScript,The Good Parts,3.7枚舉) – mdup 2012-08-14 15:08:25