Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function schoolGrades(arr) {
- let grades = {};
- // Parse input and update grades object
- for (let line of arr) {
- let tokens = line.split(' ');
- let name = tokens.shift();
- let studentGrades = tokens.map(x => Number(x));
- if (name in grades) {
- for (let i = 0; i < studentGrades.length; i++) {
- grades[name].push(studentGrades[i]);
- }
- } else {
- grades[name] = studentGrades;
- }
- }
- let averages = {};
- // Calculate average grade for each student and store in averages object
- for (let name in grades) {
- let total = 0;
- for (let i = 0; i < grades[name].length; i++) {
- total += grades[name][i];
- }
- let average = (total / grades[name].length).toFixed(2);
- averages[name] = average;
- }
- // Sort averages object by student name and print the results
- let sortedAverages = Object.entries(averages).sort((a, b) => a[0].localeCompare(b[0]));
- for (let [name, grade] of sortedAverages) {
- console.log(`${name}: ${grade}`);
- }
- }
- OR
- function schoolGrades(arr) {
- let grades = {};
- // Parse input and update grades object
- for (let line of arr) {
- let tokens = line.split(' ');
- let name = tokens.shift();
- let studentGrades = tokens.map(x => Number(x));
- if (name in grades) {
- grades[name].push(...studentGrades);
- } else {
- grades[name] = studentGrades;
- }
- }
- let averages = {};
- // Calculate average grade for each student and store in averages object
- for (let name in grades) {
- let total = grades[name].reduce((acc, curr) => acc + curr);
- let average = (total / grades[name].length).toFixed(2);
- averages[name] = average;
- }
- // Sort averages object by student name and print the results
- let sortedAverages = Object.entries(averages).sort((a, b) => a[0].localeCompare(b[0]));
- for (let [name, grade] of sortedAverages) {
- console.log(`${name}: ${grade}`);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement