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

Read values of objects within objects in Javascript

本文关键字:对象 读取 Javascript 取对象      更新时间:2023-09-26

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

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

相反,用a代替(var prop in deMapping)代替…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…

编辑:

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