Advertisement
kstoyanov

02. Race js fundamentals

Jul 27th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(args) {
  2.   const participants = args.shift().split(', ');
  3.  
  4.   const racers = {};
  5.   participants.forEach((name) => {
  6.     if (!Object.prototype.hasOwnProperty.call(racers, name)) {
  7.       racers[name] = [];
  8.     }
  9.   });
  10.  
  11.  
  12.   args.forEach((str) => {
  13.     if (str !== 'end of race') {
  14.       const name = str.match(/[A-Za-z]+/g).join('');
  15.       const distanceRan = str.match(/\d/g);
  16.  
  17.       if (Object.prototype.hasOwnProperty.call(racers, name)) {
  18.         const distanceCalc = distanceRan.map(Number).reduce((acc, currV) => acc + currV, 0);
  19.  
  20.         racers[name].push(distanceCalc);
  21.  
  22.         if (racers[name][1] !== undefined) {
  23.           const sum = racers[name].reduce((acc, currV) => acc + currV);
  24.           racers[name] = [sum];
  25.         }
  26.  
  27.  
  28.         racers[name].sort((a, b) => b - a);
  29.       }
  30.     }
  31.   });
  32.  
  33.   const winners = Object.entries(racers).sort((a, b) => b[1] - a[1]).slice(0, 3);
  34.  
  35.   winners.forEach((racer, index) => {
  36.     const [name] = racer;
  37.  
  38.     const numbPlace = index + 1;
  39.  
  40.     if (numbPlace === 1) {
  41.       console.log(`${numbPlace}st place: ${name}`);
  42.     } else if (numbPlace === 2) {
  43.       console.log(`${numbPlace}nd place: ${name}`);
  44.     } else if (numbPlace === 3) {
  45.       console.log(`${numbPlace}rd place: ${name}`);
  46.     }
  47.   });
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement