✅ Jeśli będziesz mieć problem z rozwiązaniem tego zadania, poproś o pomoc na odpowiednim kanale na Slacku, tj.
s1e04-js-basics(dotyczy mentee) lub na ogólnodostępnej i bezpłatnej społeczności na Discordzie. Pamiętaj, aby treść Twojego wpisu spełniała odpowiednie kryteria.
Tym razem stworzysz konstruktor, na podstawie którego będzie można generować obiekt przechowujący informacje o studencie.
Wymagania:
-
Obiekt posiada imię i nazwisko przekazywane podczas inicjalizacji (przy użyciu
new). -
Konstruktor:
- udostępnia metody (przez
prototype), - metody te pozwalają:
- dodać ocenę z danego przedmiotu,
- obliczyć średnią arytmetyczną z konkretnego przedmiotu,
- obliczyć ogólną średnią arytmetyczną.
Przykład użycia może wyglądać tak:
const student = new Student('Jan', 'Kowalski');
student.addGrade('maths', 4);
student.addGrade('maths', 6);
student.addGrade('english', 3);
const avgMath = student.getAverageGrade('math'); // 5
const avg = student.getAverageGrade(); // 4.33
Struktura danych w obiekcie może prezentować się następująco:
{
firstName: 'Jan',
lastName: 'Kowalski',
grades: {
maths: [4, 6],
english: [3],
}
}
To oznacza, że w konstruktorze deklaracje właściwości mogą wyglądać np. tak:
/* ... */ {
this.firstName = firstName;
this.lastName = lastName;
this.grades = {}
}
Aby rozróżnić, czy mamy podać średnią dla 1 przedmiotu, czy dla wszystkich, wystarczy sprawdzić, czy pierwszy parametr funkcji .getAverageGrade() jest zdefiniowany (różny od undefined).
Zwróć uwagę, że pobranie informacji o ocenach z konkretnego przedmiotu może się odbywać w ten sposób:
const subject = 'maths';
const grades = this.grades[subject];
Pamiętaj również, aby przy dodawaniu ocen sprawdzić, czy dany przedmiot już istnieje. Jeśli nie, to trzeba utworzyć odpowiednią właściwość w obiekcie, przypisać do niej pustą tablicę i wstawić odpowiednią ocenę, np.
if(typeof this.grades[subject] === 'undefined') {
this.grades[subject] = [];
}
this.grades[subject].push(grade);
Powodzenia!
⛔ Jeśli nie posiadasz materiałów do tego zadania tj. PDF + wideo, projekt + Code Review, znajdziesz je na stronie devmentor.pl
⬅️ poprzednie zadanie |
następne zadanie➡️