Advertisement
TZinovieva

School Grades JSFundamentals

Mar 2nd, 2023
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function schoolGrades(arr) {
  2.   let grades = {};
  3.  
  4.   // Parse input and update grades object
  5.   for (let line of arr) {
  6.     let tokens = line.split(' ');
  7.     let name = tokens.shift();
  8.     let studentGrades = tokens.map(x => Number(x));
  9.  
  10.     if (name in grades) {
  11.       for (let i = 0; i < studentGrades.length; i++) {
  12.         grades[name].push(studentGrades[i]);
  13.       }
  14.     } else {
  15.       grades[name] = studentGrades;
  16.     }
  17.   }
  18.  
  19.   let averages = {};
  20.  
  21.   // Calculate average grade for each student and store in averages object
  22.   for (let name in grades) {
  23.     let total = 0;
  24.     for (let i = 0; i < grades[name].length; i++) {
  25.       total += grades[name][i];
  26.     }
  27.     let average = (total / grades[name].length).toFixed(2);
  28.     averages[name] = average;
  29.   }
  30.  
  31.   // Sort averages object by student name and print the results
  32.   let sortedAverages = Object.entries(averages).sort((a, b) => a[0].localeCompare(b[0]));
  33.   for (let [name, grade] of sortedAverages) {
  34.     console.log(`${name}: ${grade}`);
  35.   }
  36. }
  37.  
  38. OR
  39.  
  40. function schoolGrades(arr) {
  41.   let grades = {};
  42.  
  43.   // Parse input and update grades object
  44.   for (let line of arr) {
  45.     let tokens = line.split(' ');
  46.     let name = tokens.shift();
  47.     let studentGrades = tokens.map(x => Number(x));
  48.  
  49.     if (name in grades) {
  50.       grades[name].push(...studentGrades);
  51.     } else {
  52.       grades[name] = studentGrades;
  53.     }
  54.   }
  55.  
  56.   let averages = {};
  57.  
  58.   // Calculate average grade for each student and store in averages object
  59.   for (let name in grades) {
  60.     let total = grades[name].reduce((acc, curr) => acc + curr);
  61.     let average = (total / grades[name].length).toFixed(2);
  62.     averages[name] = average;
  63.   }
  64.  
  65.   // Sort averages object by student name and print the results
  66.   let sortedAverages = Object.entries(averages).sort((a, b) => a[0].localeCompare(b[0]));
  67.   for (let [name, grade] of sortedAverages) {
  68.     console.log(`${name}: ${grade}`);
  69.   }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement