【问题标题】:What am I doing wrong in this javascript loop operation?我在这个 javascript 循环操作中做错了什么?
【发布时间】:2014-04-07 13:06:53
【问题描述】:

我已经使用 AJAX 从 php 调用了一些数据,如果我编写 alert(data.a) 代码,结果如下所示...

({a:[{my_id:"34", name:"Dave"}, {my_id:"39", name:"Barry"}]} 

我不知道如何循环来提取值。

我的最新代码...

for (var key in data.a)
{
 if (data.a.hasOwnProperty(key))
 {
   alert(key + " -> " + data.a[key]);
 }
}

...显示

0 -> [object Object]

这显示也一样...

for (var i=0,  tot=data.a.length; i < tot; i++)
{
  for (var key in data.a[i]) 
  {
    if (data.a[i].hasOwnProperty(key))
    {
      alert(key + " -> " + data.a[i][key]);
    }
  }
}

循环遍历这些结果以提取数据进行显示的技巧是什么?

如果有帮助,这是我在 php 末尾发送的内容...

$x['a'] = $myArray; 
echo json_encode($x);

感谢您的时间和帮助。

【问题讨论】:

  • console.log(data.a); 你会知道结构
  • 不推荐用于调试目的的警报。警告对象将打印[object ObjectName]。使用console.log。你的第二个循环是对的!
  • 无法重现问题。请检查此jsfiddle.net/5xnUS

标签: javascript arrays json loops object


【解决方案1】:

你在追求这样的事情吗?遍历所有对象以打印出它们的所有属性和值?

for (var i = 0; i < data.a.length; i++) {
    var objectInArray = data.a[i];
    var keys = Object.keys(objectInArray);
    for (var j = 0; j < keys.length; j++) {
        var key = keys[j];
        alert(key  + " -> " + objectInArray[key]);
    }
}

【讨论】:

    【解决方案2】:

    当您在 for 循环中执行 data.a[key] 时,您将获得一个 json 对象:{my_id:"34", name:"Dave"} for key = 0,{my_id:"39", name:"Barry"} for key = 1。因此,为了获取值,您应该执行以下操作:

    for (var key in data.a)
    {
      if (data.a.hasOwnProperty(key))
      {
         alert(key + " -> " + data.a[key].my_id);
         // data.a[key].name to get name attribute
      }
    }
    

    【讨论】:

    • 谢谢大家。所有非常有用的 cmets!
    【解决方案3】:

    只是

    for (var i=0; i < data.a.length; i++) {
      alert(data.a[i].my_id + " -> " + data.a[i].name);
    }
    

    【讨论】:

      【解决方案4】:

      在您的示例中,data.a 是一个对象数组,因此可以使用:

      for (var i = 0; i < data.a.length; i++) {
        console.log('my_id: ' + data.a[i].my_id);
        console.log('name: ' + data.a[i].name);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-26
        • 2014-03-24
        • 1970-01-01
        • 2015-05-08
        • 2018-08-12
        相关资源
        最近更新 更多