Javascript Foreach 循环遍历对象数组


Javascript Foreach loop over array of objects?

我目前正在使用 Ajax 使用其 API 从应用程序重复提取控制台日志。在 PHP 中对返回值执行 var_dump() 时,它是一个对象数组,我需要遍历并拉取值。

这在PHP中当然很简单,但是由于我缺乏Javascript的经验,我无法用foreach或foreach循环来解决这个问题。我已经使用控制台.log开发人员控制台,内容在那里,但有关如何循环浏览此内容的任何帮助将不胜感激。

JS/Ajax:

function getConsoleMessages()
{
    var messageBox = document.getElementById("console_message");
    // Clear the message box contents
    //messageBox.value = '';
    $.ajax({
        type: "POST",
        url: "ajax.php",
        data: { 'action': 'getConsoleMessages' },
        dataType: 'json',
        success: function(data)
        {
            var messages = data['message'];
            messages.forEach( function (item)
            {
                var x = item.Contents;
                console.log(x);
            });
        },
        error: function(XMLHttpRequest, textStatus, errorThrown)
        { 
            alert("Status: " + textStatus); alert("Error: " + errorThrown); alert("Message: " + XMLHttpRequest.responseText);
        }
    });
};

PHP 处理程序:

case "sendConsoleMessage":
{
    $message = $_POST["message"];
    if (empty($message))
    {
        $response['status'] = "failed";
        $response['message'] = "Command parameter was not received.";
    }
    else
    {
        $amp->sendConsoleMessage($message);
        $response['status'] = "success";
        $response['message'] = $message;
    }
    echo json_encode($response);
    break;
}

PHP var_dump:

object(stdClass)[2]
  public 'result' => 
    array (size=40)
      0 => 
        object(stdClass)[3]
          public 'Timestamp' => string '/Date(1422419818830-0500)/' (length=26)
          public 'Source' => string 'Console' (length=7)
          public 'Type' => string 'Console' (length=7)
          public 'Contents' => string 'Assigned anonymous gameserver Steam ID [A:1:721403909:5132].' (length=60)
      1 => 
        object(stdClass)[4]
          public 'Timestamp' => string '/Date(1422419819038-0500)/' (length=26)
          public 'Source' => string 'Console' (length=7)
          public 'Type' => string 'Console' (length=7)
          public 'Contents' => string 'VAC secure mode is activated.' (length=29)
      2 => 
        object(stdClass)[5]
          public 'Timestamp' => string '/Date(1422419819145-0500)/' (length=26)
          public 'Source' => string 'Console' (length=7)
          public 'Type' => string 'Console' (length=7)
          public 'Contents' => string 'tf_server_identity_account_id not set; not logging into registered account' (length=74)

试试这个:

function getConsoleMessages()
{
    var messageBox = document.getElementById("console_message");
    // Clear the message box contents
    //messageBox.value = '';
    $.ajax({
        type: "POST",
        url: "ajax.php",
        data: { 'action': 'getConsoleMessages' },
        dataType: 'json',
        success: function(data)
        {
            var messages = data['message']['result'];
            messages.forEach( function (item)
            {
                var x = item.Contents;
                console.log(x);
            });
        },
        error: function(XMLHttpRequest, textStatus, errorThrown)
        { 
            alert("Status: " + textStatus); alert("Error: " + errorThrown); alert("Message: " + XMLHttpRequest.responseText);
        }
    });
};

通过查看您的数据,我想你想做标准

for(i;i<count;i++)
{
   //then and this is the part I believe you are missing:
    for (variable in object) 
    {  str += variable + ":" + object[variable] ;  }
}

看:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

语法:

for ([start]; [condition]; [final-expression])
    statement

规则:

Traditional way of iterating over arrays.
Can use var, but scope is always the complete surrounding function.

例:

var arr = [ "a", "b", "c" ];
for(var i=0; i < arr.length; i++) {
    console.log(arr[i]);
}