Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function problem4(input) {
- var userMap = {"students": [], "trainers": []};
- var criteria = input[0];
- for (var i = 1; i < input.length; i++) {
- var currLine = JSON.parse(input[i]);
- delete currLine.town;
- if (currLine.role == 'student') {
- delete currLine.role;
- var grade = calcAvg(currLine.grades);
- currLine = JSON.stringify(currLine);
- currLine = currLine.replace("grades", "averageGrade");
- currLine = JSON.parse(currLine);
- currLine.averageGrade = grade.toFixed(2);
- userMap.students.push(currLine);
- //console.log(currLine);
- }
- else {
- userMap.trainers.push(currLine);
- }
- }
- if (criteria == 'level^courses') {
- userMap.students.sort(sortByLevaelID);
- }
- if (criteria == 'name^courses') {
- userMap.students.sort(sortByFirsLast);
- }
- userMap.trainers.sort(sortTrainers);
- //console.log(userMap);
- for (var i in userMap.students) {
- delete userMap.students[i].level;
- }
- for (var i in userMap.trainers) {
- delete userMap.trainers[i].role;
- }
- console.log(JSON.stringify(userMap));
- //sort trainers
- function sortTrainers(a, b) {
- if (a.courses.length - b.courses.length != 0) {
- return a.courses.length - b.courses.length;
- }
- return parseInt(a.lecturesPerDay) - parseInt(b.lecturesPerDay);
- }
- //sorts by Level and ID
- function sortByLevaelID(a, b) {
- if (parseInt(a.level) - parseInt(b.level) != 0) {
- return parseInt(a.level) - parseInt(b.level);
- }
- return parseInt(a.id) - parseInt(b.id);
- }
- //Sorts by First name and Last name
- function sortByFirsLast(a, b) {
- if (a.firstname.localeCompare(b.firstname) != 0) {
- return a.firstname.localeCompare(b.firstname);
- }
- //a.name.localeCompare(b.name)
- return a.lastname.localeCompare(b.lastname);
- }
- function calcAvg(arr) {
- var sum = arr.reduce(function(a, b){return parseFloat(a) + parseFloat(b)});//sum of Arr numbers
- return (sum/arr.length);
- }
- }
- problem4([
- //'level^courses',
- 'name^courses',
- '{"id":0,"firstname":"Angel","lastname":"Yvanov","town":"Plovdiv","role":"student","grades":["5.89"],"level":2,"certificate":false}',
- '{"id":1,"firstname":"Mitko","lastname":"Nakova","town":"Dimitrovgrad","role":"trainer","courses":["PHP","Unity Basics"],"lecturesPerDay":6}',
- '{"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}',
- '{"id":3,"firstname":"Ivan","lastname":"Ivanova","town":"Vidin","role":"trainer","courses":["JS","Java","JS OOP","Database","OOP","C#"],"lecturesPerDay":7}',
- '{"id":4,"firstname":"Mitko","lastname":"Petrova","town":"Sofia","role":"trainer","courses":["Database","JS Apps","Java"],"lecturesPerDay":2}'
- ])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement