2017-08-30 56 views
-3

我有一個這樣的對象:如何迭代數組中的對象值?

{ 
    username: { 
    hobby: [ 
     { 
     hobby1: "cricket", 
     hobby2: "swim" 
     }, 
     { 
     hobby3: "dance", 
     hobby4: "zumba" 
     } 
    ] 
    } 
} 

我可以很容易地做一個forEach,做console.log(item)但如果我只想值板球,游泳,舞蹈,尊巴單獨(不需要hobby1通過hobby4) 。有人能告訴我如何單獨提取這些值嗎?

+1

現在的問題是不明確的。對象中的「嗜好」在哪裏? – brk

+1

你能告訴我們確切的輸出細節嗎? –

+1

您試圖實現什麼值輸出 – bdalina

回答

0

,就可以輕鬆的對象,並使用for陣列一個for這樣內循環:

let obj = { 
 
     username: { 
 
      hobby: [ 
 
       { 
 
        hobby1: "cricket", 
 
        hobby2: "swim" 
 
       }, 
 
       { 
 
        hobby3: "dance", 
 
        hobby4: "zumba" 
 
       } 
 
      ] 
 
    } 
 
} 
 

 
for(let hobbies of obj.username.hobby) { 
 
    for(let hobby in hobbies) { 
 
      console.log(hobbies[hobby]) 
 
    } 
 
}

1

如果你想只用愛好的對象,則可以減少陣列返回

var obj = { 
 
    username: { 
 
    hobby: [{ 
 
     hobby1: "cricket", 
 
     hobby2: "swim" 
 
     }, 
 
     { 
 
     hobby3: "dance", 
 
     hobby4: "zumba" 
 
     } 
 
    ] 
 
    } 
 
} 
 

 
var obj2 = obj.username.hobby.reduce((a, b) => { 
 
    Object.entries(b).forEach(x => a[x[0]] = x[1]); return a; 
 
}, {}) 
 

 
console.log(obj2); 
 
console.log(Object.values(obj2)); // just the values

+0

語法錯誤。可以解決它? –

+0

@RameshRajendran - 然後得到一個適當的瀏覽器 – adeneo

+0

IE 11不是一個適當的瀏覽器? –

1

試試這個,我瞭解的是,你只需要「興趣愛好」爲價值不是他們的索引

var json= { 
     username: { 
      hobby: [{ 
       hobby1: "cricket", 
       hobby2: "swim" 
      }, 
      { 
       hobby3: "dance", 
       hobby4: "zumba" 
      }] 
     } 
     } ; 

var hobbies=json.username.hobby; 

var hobbies_arr=[]; 
var i=0; 
for(var item in hobbies){ 
    item=hobbies[item];   
    for(var hobby in item){ 
     hobby=item[hobby]; 
     hobbies_arr[i]=hobby; 
     i++; 
    } 
} 

console.log(hobbies_arr); 

出認沽將

數組[ 「蟋蟀」, 「遊」, 「舞蹈」, 「尊巴」]

0

您可以使用array#reduce將您的所有愛好累積到數組中。

var obj = {username: {hobby: [{hobby1: "cricket",hobby2: "swim"},{hobby3: "dance",hobby4: "zumba"}]}}; 
 

 
var result = obj.username.hobby.reduce((res, obj) => res.concat(Object.values(obj)), []); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }