嵌套对象结构

Nested object structure

本文关键字:结构 对象 嵌套      更新时间:2023-09-26

在以下Fiddle中:

https://jsfiddle.net/dzddv6pa/

console.clear();
var data = {
    "apps": [{
        "appName": "App1",
        "subApps": [{
            "subAppName": "ABC",
            "docs": [{
                "docTypes": [{
                    "docTypeName": "Deploy"
                }]
            }]
        }, {
            "subAppName": "DEF",
            "docs": [{
                "docTypes": [{
                    "docTypeName": "Deploy"
                }]
            }]
        }, {
            "subAppName": "GHI",
            "docs": [{
                "docTypes": {
                    "docTypeName": "Dev"
                },
                "docTypes": {
                    "docTypeName": "Deploy"
                },
                "docTypes": {
                    "docTypeName": "Support"
                }
            }]
        }]
    }]
};
var apps = data.apps;
var appsLen = apps.length;
for (var i = 0; i < appsLen; i++) {
    var app = apps[i];
  var appName = app.appName;
  console.log(appName);
  var subApps = app.subApps;
  var subAppsLen = subApps.length;
  for (var j = 0; j < subAppsLen; j++) {
    var subApp = subApps[j];
    var subAppName = subApp.subAppName;
    console.log("'t" + subAppName);
    var docs = subApp.docs;
    var docsLen = docs.length;
    for (var k = 0; k < docsLen; k++) {
        var doc = docs[k];
      var docTypes = doc.docTypes;
            var docTypesLen = docTypes.length;
      for (var l = 0; l < docTypesLen; l++) {
        var docType = docTypes[l];
        var docTypeName = docType.docTypeName;
        console.log("'t't" + docTypeName);
      }
    }
  }
}

我正在循环使用data变量,试图将以下结构打印到控制台,但我一辈子都无法在GHI-Dev,Deploy,Support-下获得docTypeName来打印:

App1
        ABC
                Deploy
        DEF
                Deploy
        GHI
                Dev
                Deploy
                Support

有人看到我做错了什么吗?我有一部分认为这是对象结构,但我尝试过不同的变体,但都不起作用。我一定是在俯瞰什么。

EDIT:用正确的Object结构更新了Fiddle:https://jsfiddle.net/dzddv6pa/2/

javascript对象中不能有重复的属性。如果您希望有多个docTypes,则应该将其设为一个数组。

{
  "subAppName": "GHI",
  "docs": [{
    "docTypes": [{
      "docTypeName": "Dev"
    }, {
      "docTypeName": "Deploy"
    }, {
      "docTypeName": "Support"
    }]
  }]
}