@@ -11,11 +11,42 @@ import { modules, students, mentors, classes } from "./hyf.js";
1111 *
1212 * [{ name: 'John', role: 'student' }, { name: 'Mary', role: 'mentor' }]
1313 */
14+
1415const getPeopleOfClass = ( className ) => {
15- // TODO complete this function
16- } ;
17- // You can uncomment out this line to try your function
18- // console.log(getPeopleOfClass('class34'));
16+
17+ function filterByProperty ( people , property , value ) {
18+ return people . filter ( ( person ) => {
19+ const prop = person [ property ] ;
20+ if ( Array . isArray ( prop ) ) {
21+ return prop . includes ( value ) ;
22+ } else {
23+ return prop === value ;
24+ }
25+ } ) ;
26+ }
27+
28+ function getPeopleInfo ( people , role ) {
29+ return people . map ( ( person ) => ( { name : person . name , role : role } ) ) ;
30+ }
31+
32+ const classStudents = filterByProperty ( students , 'class' , className ) ;
33+ const classStudentsInfo = getPeopleInfo ( classStudents , 'student' )
34+
35+ const currentClass = classes . find ( curClass => curClass . name === className ) ;
36+ if ( ! currentClass ) {
37+ console . error ( `There is no ${ currentClass } in the list` ) ;
38+ return [ ] ;
39+ }
40+
41+ const currentModuleOfClass = currentClass . currentModule ;
42+
43+ const currentMentor = filterByProperty ( mentors , 'nowTeaching' , currentModuleOfClass ) ;
44+ const currentMentorInfo = getPeopleInfo ( currentMentor , 'mentor' ) ;
45+
46+ return classStudentsInfo . concat ( currentMentorInfo ) ;
47+ }
48+
49+ console . log ( getPeopleOfClass ( 'class34' ) ) ;
1950
2051/**
2152 * We would like to have a complete overview of the current active classes.
@@ -29,8 +60,15 @@ const getPeopleOfClass = (className) => {
2960 * class35: [{ name: 'Jane', role: 'student' }, { name: 'Steve', role: 'mentor' }]
3061 * }
3162 */
63+
3264const getActiveClasses = ( ) => {
33- // TODO complete this function
65+ return classes
66+ . filter ( ( activeClass ) =>
67+ activeClass . active === true )
68+ . reduce ( ( result , curClass ) => {
69+ result [ curClass . name ] = getPeopleOfClass ( curClass . name ) ;
70+ return result ;
71+ } , { } ) ;
3472} ;
35- // You can uncomment out this line to try your function
36- // console.log(getActiveClasses());
73+
74+ console . log ( getActiveClasses ( ) ) ;
0 commit comments