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:正确循环对象?的主要内容,如果未能解决你的问题,请参考以下文章

jquery中遍历指定的对象和数组是哪个方法

jQuery 循环遍历 data() 对象

jquery中object对象循环遍历的方法

08_jQuery对象初识(四)each循环data(非常重要)

Jquery循环重复创建相同的对象

JavaScript 循环jQuery对象并返回值