Advertisement
Guest User

04_Problem

a guest
Nov 24th, 2014
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function problem4(input) {
  2.     var userMap = {"students": [], "trainers": []};
  3.     var criteria = input[0];
  4.     for (var i = 1; i < input.length; i++) {
  5.         var currLine = JSON.parse(input[i]);
  6.         delete currLine.town;
  7.         if (currLine.role == 'student') {
  8.             delete  currLine.role;
  9.             var grade = calcAvg(currLine.grades);
  10.             currLine = JSON.stringify(currLine);
  11.             currLine = currLine.replace("grades", "averageGrade");
  12.             currLine = JSON.parse(currLine);
  13.             currLine.averageGrade = grade.toFixed(2);
  14.             userMap.students.push(currLine);
  15.             //console.log(currLine);
  16.         }
  17.         else {
  18.             userMap.trainers.push(currLine);
  19.         }
  20.     }
  21.     if (criteria == 'level^courses') {
  22.         userMap.students.sort(sortByLevaelID);
  23.     }
  24.     if (criteria == 'name^courses') {
  25.         userMap.students.sort(sortByFirsLast);
  26.     }
  27.     userMap.trainers.sort(sortTrainers);
  28.     //console.log(userMap);
  29.     for (var i in userMap.students) {
  30.         delete userMap.students[i].level;
  31.     }
  32.     for (var i in userMap.trainers) {
  33.         delete userMap.trainers[i].role;
  34.     }
  35.     console.log(JSON.stringify(userMap));
  36.     //sort trainers
  37.     function sortTrainers(a, b) {
  38.         if (a.courses.length - b.courses.length != 0) {
  39.             return a.courses.length - b.courses.length;
  40.         }
  41.         return parseInt(a.lecturesPerDay) - parseInt(b.lecturesPerDay);
  42.     }
  43. //sorts by Level and ID
  44.     function sortByLevaelID(a, b) {
  45.         if (parseInt(a.level) - parseInt(b.level) != 0) {
  46.             return parseInt(a.level) - parseInt(b.level);
  47.         }
  48.         return parseInt(a.id) - parseInt(b.id);
  49.     }
  50. //Sorts by First name and Last name
  51.     function sortByFirsLast(a, b) {
  52.         if (a.firstname.localeCompare(b.firstname) != 0) {
  53.             return a.firstname.localeCompare(b.firstname);
  54.         }
  55.         //a.name.localeCompare(b.name)
  56.         return a.lastname.localeCompare(b.lastname);
  57.     }
  58.  
  59.     function calcAvg(arr) {
  60.         var sum = arr.reduce(function(a, b){return parseFloat(a) + parseFloat(b)});//sum of Arr numbers
  61.         return (sum/arr.length);
  62.     }
  63. }
  64.  
  65. problem4([
  66.         //'level^courses',
  67.         'name^courses',
  68.     '{"id":0,"firstname":"Angel","lastname":"Yvanov","town":"Plovdiv","role":"student","grades":["5.89"],"level":2,"certificate":false}',
  69.     '{"id":1,"firstname":"Mitko","lastname":"Nakova","town":"Dimitrovgrad","role":"trainer","courses":["PHP","Unity Basics"],"lecturesPerDay":6}',
  70.     '{"id":2,"firstname":"Angel","lastname":"Ivanov","town":"Varna","role":"student","grades":["5.59","3.50","4.54","5.05","3.45"],"level":4,"certificate":false}',
  71.     '{"id":3,"firstname":"Ivan","lastname":"Ivanova","town":"Vidin","role":"trainer","courses":["JS","Java","JS OOP","Database","OOP","C#"],"lecturesPerDay":7}',
  72.     '{"id":4,"firstname":"Mitko","lastname":"Petrova","town":"Sofia","role":"trainer","courses":["Database","JS Apps","Java"],"lecturesPerDay":2}'
  73. ])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement