jQuery:正确循环对象?
Posted
技术标签:
【中文标题】jQuery:正确循环对象?【英文标题】:jQuery: Looping through object properly? 【发布时间】:2011-06-03 23:10:35 【问题描述】:我正在尝试使用以下代码 sn-p 遍历下面显示的 JS 对象,同时需要获取索引键和内部对象。
我到底应该怎么做,因为以下不起作用?
对象:
( prop_1:["1", "2"],
prop_2:["3", "4"])
我的代码:
$.each(myObject, function(key,valueObj)
alert(key + "/" + valueObj.toSource() );
);
预期输出:
prop_1 / (["1", "2"])
【问题讨论】:
【参考方案1】:你正在获取的内部对象,valueObj
是数组,它只是没有方法.toSource()
(至少不是跨浏览器),如果你删除它你'会收到警报:
$.each(myObject, function(key,valueObj)
alert(key + "/" + valueObj );
);
You can test it out here,不要以为输出只是:
prop_1/1,2
prop_2/3,4
...数组上的默认.toString()
是一个逗号分隔的列表,这就是您在alert()
中看到的内容。例如,如果您改为使用alert(key + "/" + valueObj[0] );
,您会看到:
prop_1/1
prop_2/3
...所以你可以看到你确实有你想要的数组,you can test that here。
【讨论】:
【参考方案2】:你可以使用 for in 循环:
var myObject = ( prop_1:["1", "2"], prop_2:["3", "4"])
for (var key in myObject)
if (myObject.hasOwnProperty(key))
alert(key + "/" + myObject[key]);
【讨论】:
这也将包括函数,因此如果您不想要它们,请务必使用typeof
过滤它们。 (javascript,好的部分,3.7 枚举)以上是关于jQuery:正确循环对象?的主要内容,如果未能解决你的问题,请参考以下文章