Javascript 如何遍历JSON对象

Javascript 如何遍历JSON对象,javascript,json,Javascript,Json,通过AJAX,我得到了一个JSON对象,我想查看所有这些项目。。这是我的ajax document.getElementById('ACOptions').innerHTML = ""; $.ajax({url: "SearchAvailableAircraft.php?ID=<?php echo $SimID; ?>&Code=<?php echo $SimCode; ?>&Search=" + S, success: funct

通过AJAX,我得到了一个JSON对象,我想查看所有这些项目。。这是我的ajax

        document.getElementById('ACOptions').innerHTML = "";
    $.ajax({url: "SearchAvailableAircraft.php?ID=<?php echo $SimID; ?>&Code=<?php echo $SimCode; ?>&Search=" + S, success: function(result){
                /*alert(result);*/
                var MyAircraftList = result.AircraftList;
document.getElementById('ACOptions').innerHTML=“”;
$.ajax({url:SearchAvailableAircraft.php?ID=&Code=&Search=“+S,success:function(result){
/*警报(结果)*/
var MyAircraftList=结果.AircraftList;
下面是我的回答

{“status”:200,“status_message”:“Valid Account”,“AircraftList”:[{“ID”:“1”,“FullTXT”:“Boeing 777-200ER”,“TypeCode”:“772”,“Manufacturer”:“Boeing”,“Model”:“777”,“Variant”:“200ER”,“PaxCnt”:“305”,“RangeNM”:“5240”,“MinRwFT”:“8000”,“Cost”:“261500000”,“delivery”:“18”),{“ID”:“2”,“FullTXT”:“空中客车A320-200”,“TypeCode”:“320”,“制造商”:“Airbus”,“型号”:“A320”,“变型”:“200”,“PaxCnt”:“186”,“范围NM”:“3300”,“MinRwFT”:“2100”,“成本”:“9800000”,“交货延迟”:“9”}]}


如果知道我的对象是结果,我如何循环这些属性。AircraftList

您可以使用
.forEach
在数组中迭代,然后在上一个循环中使用
for in
循环来迭代属性

var数据={“状态”:200,“状态信息”:“有效帐户”,“飞机列表”:[{“ID”:“1”,“FullTXT”:“波音777-200ER”,“类型代码”:“772”,“制造商”:“波音”,“型号”:“777”,“变型”:“200ER”,“PaxCnt”:“305”,“RangeNM”:“5240”,“MinRwFT”:“8000”,“成本”:“261500000”,“交付延迟”:“18”},“ID”:“2”,“FullTXT”:“空中客车A320-200”,“类型代码”:“320”,“320”,“320”制造商:“空中客车”、“型号”、“A320”、“变型”、“200”、“PaxCnt”、“186”、“范围NM”、“最小载重英尺”、“2100”、“成本”、“98000000”、“交货延迟”、“9”}
var MyAircraftList=data.AircraftList;
MyAircraftList.forEach(功能(飞机,i){
用于(飞机上的var键){
控制台日志(i,键,飞机[键]);
}

});
我将使用一个简单的递归函数来迭代对象。它使迭代嵌套对象成为可能

// Your response
var response = {
    "status": 200,
    "status_message": "Valid Account",
    "AircraftList": [{
            "ID": "1",
            "FullTXT": "Boeing 777-200ER",
            "TypeCode": "772",
            "Manufacturer": "Boeing",
            "Model": "777",
            "Variant": "200ER",
            "PaxCnt": "305",
            "RangeNM": "5240",
            "MinRwFT": "8000",
            "Cost": "261500000",
            "DeliveryDelay": "18"
        }, {
            "ID": "2",
            "FullTXT": "Airbus A320-200",
            "TypeCode": "320",
            "Manufacturer": "Airbus",
            "Model": "A320",
            "Variant": "200",
            "PaxCnt": "186",
            "RangeNM": "3300",
            "MinRwFT": "2100",
            "Cost": "98000000",
            "DeliveryDelay": "9"
        }]
};
定义此函数:

function iterateRecursively(object, callbackFunction) {

    // Walk through object
    for (var keyName in object) {

        // If the given parameter is an object, call the function over and 
        // over again, till you get a string or number
        if (typeof object[keyName] === 'object') {

            iterateRecursively(object[keyName], callbackFunction);

        } else {

            // Callback function to do something with results outside of main function
            if (typeof callbackFunction === 'function') {
                callbackFunction(keyName, object[keyName]);
            }

        }
    }
}
因此,现在您可以使用以下命令遍历子元素:

iterateRecursively(response.AircraftList, function (key, value) {

    // You could use "status" as condition. For example if you get some other status 
    // than "200", you could do something else (may be an error message).
    // For example: 
    // if(key == 'status' && value != 200) doSomething();

    console.log(key + " = " + value);
});

您还可以将整个“response”对象传递给函数。它将具有相同的效果。此外,您还可以访问其他元素,如“status\u message”“等等。

不是一个重复,因为我有一个数组。好吧,那么内部循环将来自该答案。外部循环将来自此答案:循环通过并使用什么?我在代码中得到以下错误-未捕获的TypeError:无法读取未定义(…)的属性'forEach'这意味着您调用的
.forEach
上的变量未定义,并且不是预期的数组变量。我如何解决这个问题?很遗憾,我无法读懂您的心思。如果您使用“运行代码片段”,您问题中的JSON与我的答案配合得很好按钮。我建议你用新的JSON发布一个新问题,这会给你一个错误。这不起作用?为什么?我没有得到有效的数组或对象?奇怪。你得到了什么错误消息?什么不起作用?我稍微修改了函数,以便通过回调函数轻松访问函数之外的功能。See工作实例: