2016-07-11 74 views
1

我試圖從屬於「class」的每個數組內的對象獲取類code屬性。 (我知道我的數據很複雜)。從數組中的對象獲取屬性值

這是我的學生數組:

student = [ 
    {"class":[{ 
      "code":"PSJ001", 
      "professor":"McHale", 
      "description":"course description"}] 
    }, 
    {"class":[{ 
      "code":"ENG303", 
      "professor":"Dench", 
      "description":"course description"}] 
     }, 
    {"class":[{ 
      "code":"SCI003", 
      "professor":"Biju", 
      "description":"course description"}] 
    } 
] 

我想要得到的是...

['PSJ001','ENG303','SCI003'] 

這是我...

let classCodes = []; 
for (const i in student) { 
    classCodes = classCodes.concat(student[i].map(obj => { 
     return obj.code; 
    })); 
} 

我在這裏做錯了什麼? (寫在JSX)

+1

你的開發控制檯應該告訴你'學生'不存在。 – zzzzBov

回答

4

您可以使用map(),從而獲得所需結果

var student = [{"class":[{"code":"PSJ001","professor":"McHale","description":"course description"}]},{"class":[{"code":"ENG303","professor":"Dench","description":"course description"}]},{"class":[{"code":"SCI003","professor":"Biju","description":"course description"}]}]; 
 

 
var result = student.map(function(e) { 
 
    return e.class[0].code; 
 
}); 
 

 
console.log(result)

0

基本上這將工作可靠:

student.map(o => o.class.map(c => c.code)).reduce((obj, arr) => arr.push(...obj) && arr, []); 

首先,我們使用.map()得到類,並在裏面我們再次使用.map()來獲取代碼。這給了我們一個數組的數組。然後我們使用.reduce()來壓扁這個數組。