2017-10-21 60 views
0

我正在創建一個函數,該函數使用數組瀏覽JSON對象,並在每個步驟將其按鍵推送到結果數組。麻煩的是,我無法讓循​​環在每個循環中使用更新的對象。Javascript - 在循環外更新值,然後使用新值

JSON對象:

myData = { 
    'Eye': { 
     'Abnormal Morphology': [ 
      'Neoplasm', 
      'Abnormality of the globe' 
     ], 
     'Abnormal Physiology': [ 
      'Hemorrhage', 
      'Ptosis', 
      'Ocular pain' 
     ] 
    }, 
    'Ear': { 
     'Outer Ear': [ 
      'Abnormality of the pinna', 
      'Abnormal location of ear', 
      'Extra chondra fold' 
     ], 
     'Middle Ear': [ 
      'Glue ear', 
      'Otitis media' 
     ] 
    } 
} 

而且功能:

view = ['Ear', 'Outer Ear'] 

getMenuItems(object, array) { 
    let menuItems = Object.keys(object); 
    let result = [menuItems]; 

    for (let item in array) { 
     object = object[item];   // use updated object each time 
     menuItems = Object.keys(object); 
     result.push(menuItems); 
    } 

    return result; 
} 

我期待的結果是:

[['Eye', 'Ear'], ['Outer Ear', 'Inner Ear'], ['Abnormality of the pinna', 'Abnormal location of ear', 'Extra chondra fold']] 

但我得到的是:

['Eye', 'Ear'] 
+0

可能取代* OBJ *有*的對象*? –

+0

不好意思把變量名改成了更清楚,忘了那個! –

+0

我不確定我瞭解您期望的結果。你能舉一個你期望的結果的例子嗎? (例如結果應該是['foo','bar']) – 3Dos

回答

1
for(let item in array) 

迭代項目鍵(0,1,2)。可以使用的代替遍歷道具:

for(const item of array) 

然後works

+0

謝謝,這正是我所需要的! –