Advertisement
kstoyanov

03. School Grades js fundamentals v1 with Map

Jul 9th, 2020
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(args) {
  2.   const students = new Map();
  3.  
  4.   const average = (a, b) => {
  5.     let aSum = 0;
  6.     for (let i = 0; i < a[1].length; i++) {
  7.       aSum += a[1][i];
  8.     }
  9.  
  10.     let bSum = 0;
  11.     for (let i = 0; i < b[1].length; i++) {
  12.       bSum += b[1][i];
  13.     }
  14.  
  15.     const aAverage = aSum / a[1].length;
  16.     const bAverage = bSum / b[1].length;
  17.  
  18.     return aAverage - bAverage;
  19.   };
  20.  
  21.   args.forEach((element) => {
  22.     const tokens = element.split(' ');
  23.     const name = tokens[0];
  24.     const grades = tokens.splice(1, tokens.length).map(Number);
  25.  
  26.  
  27.     if (!students.has(name)) {
  28.       students.set(name, []);
  29.       students.set(name, students.get(name).concat(grades));
  30.     } else {
  31.       students.set(name, students.get(name).concat(grades));
  32.     }
  33.   });
  34.  
  35.   const sortByAverage = Array.from(students).sort((a, b) => average(a, b));
  36.  
  37.   sortByAverage.forEach((element) => {
  38.     const [name, grades] = element;
  39.  
  40.     console.log(`${name}: ${grades.join(', ')}`);
  41.   });
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement