2011-01-05 30 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