簡體   English   中英

我在此javascript循環操作中做錯了什么?

[英]What am I doing wrong in this javascript loop operation?

我已經使用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);

感謝您的時間和幫助。

你是在追求這樣的東西嗎? 遍歷所有對象,打印出它們的所有屬性和值?

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]);
    }
}

在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
  }
}

只是

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

在您的示例中, 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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM