繁体   English   中英

在 Javascript 中读取对象内对象的值

[英]Read values of objects within objects in Javascript

我创建了一个如下所示的键值映射,deMapping 包含来自不同来源(如 RBSK 等)的数据。现在我想读取 RBSK 和其他来源中的所有值,并希望在 foreach 循环中运行,如:deMapping.forEach(function (data )

 var deMapping = { RBSK: {'dsUID': 'tdTwLUxcQ8R', rootNodeName: 'RBSK_GIS_Indicator', orgUnitTagName: 'MCTSCode', des: [ { xmlid: "Childhood_Diseases_0_6_Female", dataElement: "oV163sbcJ0N", categoryOptionCombo: "Cmzbo9LD8pJ" }, { xmlid: "Childhood_Diseases_0_6_Male", dataElement: "oV163sbcJ0N", categoryOptionCombo: "PnAVAPG4yvb" }, { xmlid: "Childhood_Diseases_7_18_Female", dataElement: "cEPledgs7rd", categoryOptionCombo: "Cmzbo9LD8pJ" }, { xmlid: "Childhood_Diseases_7_18_Male", dataElement: "cEPledgs7rd", categoryOptionCombo: "PnAVAPG4yvb" }, {xmlid: "Deficiencies_0_6_Female", dataElement: "gKupqkIhW4n", categoryOptionCombo: "Cmzbo9LD8pJ"}, {xmlid: "Deficiencies_0_6_Male", dataElement: "gKupqkIhW4n", categoryOptionCombo: "PnAVAPG4yvb"}, {xmlid: "Deficiencies_7_18_Female", dataElement: "FuEnn0bLuoT", categoryOptionCombo: "Cmzbo9LD8pJ"}, {xmlid: "Deficiencies_7_18_Male", dataElement: "FuEnn0bLuoT", categoryOptionCombo: "PnAVAPG4yvb"}, { xmlid: "Developmental_dealy_and_disability_0_6_Female", dataElement: "v37HBq7C72j", categoryOptionCombo: "Cmzbo9LD8pJ" }, { xmlid: "Developmental_dealy_and_disability_0_6_Male", dataElement: "v37HBq7C72j", categoryOptionCombo: "PnAVAPG4yvb" }, { xmlid: "Developmental_dealy_and_disability_7_18_Female", dataElement: "S1WMlAKnF8Z", categoryOptionCombo: "Cmzbo9LD8pJ" }, { xmlid: "Developmental_dealy_and_disability_7_18_Male", dataElement: "S1WMlAKnF8Z", categoryOptionCombo: "PnAVAPG4yvb" }, { xmlid: "defect_at_birth_0_6_Female", dataElement: "JJO3utHjb3l", categoryOptionCombo: "Cmzbo9LD8pJ" }, {xmlid: "defect_at_birth_0_6_Male", dataElement: "JJO3utHjb3l", categoryOptionCombo: "PnAVAPG4yvb"}, { xmlid: "defect_at_birth_7_18_Female", dataElement: "qoVmtykHboz", categoryOptionCombo: "Cmzbo9LD8pJ" }, {xmlid: "defect_at_birth_7_18_Male", dataElement: "qoVmtykHboz", categoryOptionCombo: "PnAVAPG4yvb"} ] } }

deMapping是一个对象,因此您不能在其上运行forEach

取而代之的是 for (var prop in deMapping) for...in (并在需要时为包含的每个对象嵌套循环)。

for (var prop in deMapping) {
    var subObj = deMapping[prop];
    for (var subProp in subObj) { // subObj is what you call RBSK, we are looping on it now
         console.debug(subProp, ":", subObj[subProp]); // will output 'dsUID': 'tdTwLUxcQ8R', rootNodeName: 'RBSK_GIS_Indicator', ... at each loop
    }
}

使用 ES6,您还可以使用for...of方法,该方法适用于对象、字符串、...

编辑:访问des属性并迭代其对象,然后迭代对象属性本身。

for (var prop in deMapping) {
    var subObj = deMapping[prop];
    for (var subProp in subObj) { // subObj is what you call RBSK, we are looping on it now
         if (subProp === "des") {
             subObj[subProp].forEach(function(resObj) {
                 for (var prop in resObj) {
                     console.debug(prop, ":", resObj[prop]);
                 }
             });
         }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM