Dziennik krok 1: wszystko w jednym bloku
Projekt: dziennik ocen krok po kroku - JavaScript od podstaw: konsola (JavaScript)
Pierwsza działająca wersja, napisana "od góry do dołu". Dane to tekst: każdy wiersz to `uczeń;przedmiot;ocena`. Program dzieli tekst na wiersze, sumuje oceny w czterech obiektach (sumy i liczby osobno dla uczniów i przedmiotów), wypisuje średnie i szuka najlepszej. Działa, ale ten sam kawałek kodu (dopisanie oceny do sumy) jest napisany dwa razy, a wszystko jest w jednym miejscu. Kolejne kroki nie zmienią wyniku, zmienią kod.
const DATA = `Ola;matematyka;5
Jan;matematyka;3
Ola;polski;4
Ewa;matematyka;6
Jan;polski;2
Ewa;polski;5
Ola;matematyka;6
Jan;matematyka;4`;
const lines = DATA.split('\n');
const studentSum = {};
const studentCount = {};
const subjectSum = {};
const subjectCount = {};
for (const line of lines) {
const parts = line.split(';');
const name = parts[0];
const subject = parts[1];
const grade = Number(parts[2]);
if (studentSum[name] === undefined) {
studentSum[name] = 0;
studentCount[name] = 0;
}
studentSum[name] += grade;
studentCount[name]++;
if (subjectSum[subject] === undefined) {
subjectSum[subject] = 0;
subjectCount[subject] = 0;
}
subjectSum[subject] += grade;
subjectCount[subject]++;
}
console.log('Uczniowie:');
let bestName = '';
let bestAvg = 0;
for (const name in studentSum) {
const avg = studentSum[name] / studentCount[name];
console.log(name + ': ' + avg.toFixed(2));
if (avg > bestAvg) {
bestAvg = avg;
bestName = name;
}
}
console.log('Przedmioty:');
for (const subject in subjectSum) {
const avg = subjectSum[subject] / subjectCount[subject];
console.log(subject + ': ' + avg.toFixed(2) + ' (ocen: ' + subjectCount[subject] + ')');
}
console.log('Najlepsza średnia: ' + bestName + ' (' + bestAvg.toFixed(2) + ')');Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu JavaScript od podstaw: konsola·Zaloguj się, aby zapisać postęp na koncie.