2016-07-11 13 views
1

Ich versuche, Klasse code Eigenschaft Wert von dem Objekt innerhalb jedes Array zu "Klasse" zu greifen. (Ich bin mir bewusst, dass meine Daten verschachtelt sind).Wert der Eigenschaft von einem Objekt innerhalb eines Arrays

Das ist mein Schüler Array:

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

Was ich versuche zu bekommen ...

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

Das ist, was ich habe ...

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

Was mache ich hier falsch? (Geschrieben in jsx)

+1

Ihre Dev-Konsole sollte Ihnen sagen, dass 'Studenten' nicht existiert. – zzzzBov

Antwort

4

Sie map() verwenden können, um gewünschte Ergebnis

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

Grundsätzlich zu bekommen dies funktioniert zuverlässig:

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

Zuerst verwenden wir .map() das bekommen Klassen und im Inneren verwenden wir wieder .map(), um die Codes zu erhalten . Dies gibt uns ein Array von Arrays. Dann verwenden wir .reduce(), um dieses Array zu reduzieren.

Verwandte Themen