2015-09-24 90 views
-2

我創建了一個如下所示的關鍵值映射,deMapping包含來自不同來源(如RBSK等)的數據。 現在我想讀取RBSK和其他來源中的所有值,並希望在foreach循環,如: deMapping.forEach(功能(數據)在Javascript中讀取對象內的對象的值

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"} 
 

 

 
    ] 
 
    } 
 

 

 
}

+0

您可以在yourObj中使用for(var key){}循環! – Superdrac

回答

0

deMapping是一個對象,所以你不能在它上面運行forEach

取而代之的是尋找(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]); 
       } 
      }); 
     } 
    } 
} 
+0

可以請你詳細解釋一下,我是新手 – Marshmellow

+0

我已經添加了鏈接到...在+代碼工作 –

+0

謝謝@Secular它的工作,但有一個問題,假設我想讀des值然後怎麼可以我那樣做?現在它返回des:[對象,對象,對象,對象,對象,對象,對象,對象,對象,對象,對象,對象,對象,對象,對象] – Marshmellow