Loading...
Petya0528 avatar Petya0528 2 Точки

05. School Grades / Associative Arrays - Lab

Колеги имам нужда от помощ за задачата School Grades от Associative Arrays - Lab. Вече два дни си блъскам главата и не знам как да продължа с решението.. Judge ми дава 20/100 и уж знам защо, но не знам как да го поправя. Ето условието:

 

5.School Grades

Write a function that stores students and their grades throughout the year. If a student appears more than once, add the new grades to existing ones. Finally, print the students and their average grades, sorted alphabetically by student name. The input comes as an array of strings.

Note: The average grades must be fixed to the second decimal place.

Example

Input

Output

['Lilly 4 6 6 5',

'Tim 5 6',

'Tammy 2 4 3',

'Tim 6 6']

Lilly: 5.25

Tammy: 3.00

Tim: 5.75

['Steven 3 5 6 4',

'George 4 6',

'Tammy 2 5 3',

'Steven 6 3']

George: 5.00

Steven: 4.50

Tammy: 3.33

 

Ето и кода ми

Знам само, че проблемът идва от if-else защото не вкарвам map.set(), но ако го вкарам после не мога да сметна крайната оценка. Не знам вече главата ми гръмна.. ще ми е от огромна полза ако някой ми помогне :)

0
JavaScript Fundamentals
Axiomatik avatar Axiomatik 2422 Точки

An exploding head is a good sign, keep the pressure up !  cheeky

;-)

Demo code =>
 

function schoolGrades(students) {
    let studentList = students.reduce((acc, curr, index) => {
        let [name, ...grades] = curr.split(' ');
        grades = grades.map((g) => Number(g));
        let currentStudent = acc.find((s) => s.name === name);

        if (currentStudent) {
            currentStudent.grades.push(...grades);
        } else {
            currentStudent = {
                name,
                grades,
                average: 0,
            };

            acc.push(currentStudent);
        }

        const totalGrades = currentStudent.grades.reduce((acc, curr) => {
            acc += curr;
            return acc;
        }, 0);

        currentStudent.average = (totalGrades / currentStudent.grades.length).toFixed(2);

        return acc;
    }, []);

    studentList = studentList.sort((a, b) => a.name.localeCompare(b.name));
    studentList.forEach((stu) => console.log(`${stu.name}: ${stu.average}`));
}

 

1
Petya0528 avatar Petya0528 2 Точки

Thank you sooo much for the fast reply and really helpful answer!! Let's keep up the hard work :D

2
miopeda avatar miopeda 0 Точки

I like this information.

trap the cat

-1
07/03/2023 03:07:47
HristoVelchovski avatar HristoVelchovski 1 Точки

Привет колеги,

ето я задачката решена със знания до тема Associative Arrays.

https://pastebin.com/2m05hWwx

Поздрави!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.