【问题标题】:jQuery: Looping through object properly?jQuery:正确循环对象?
【发布时间】: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"])

【问题讨论】:

    标签: javascript jquery loops object each


    【解决方案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 枚举)
      猜你喜欢
      • 2022-11-11
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 2014-11-30
      • 2019-09-10
      • 2023-03-26
      • 2013-05-28
      • 2016-08-09
      相关资源
      最近更新 更多