Advertisement
Guest User

Tenis

a guest
Apr 6th, 2015
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var obj = [];
  2.  
  3.     input.forEach(function (match) {
  4.         var tokens = match.split(':');
  5.         var players = tokens[0].split(/vs./);
  6.         var tempObj = 0;
  7.         var homePlayer = players[0].split(/\s+/g).join(' ').trim();
  8.         var awayPlayer = players[1].split(/\s+/g).join(' ').trim();
  9.  
  10.         if (!(tempObj = contains(homePlayer))) {
  11.             var player = createPlayer(homePlayer)
  12.             player = addScore(player, tokens[1], true);
  13.  
  14.             obj.push(player);
  15.         } else {
  16.             obj[tempObj] = addScore(obj[tempObj], tokens[1], true);
  17.         }
  18.  
  19.         if (!(tempObj = contains(awayPlayer))) {
  20.             var player = createPlayer(awayPlayer);
  21.             player = addScore(player, tokens[1], false);
  22.  
  23.             obj.push(player);
  24.         } else {
  25.             obj[tempObj] = addScore(obj[tempObj], tokens[1], false);
  26.         }
  27.     });
  28.  
  29.     obj.sort(function (x, y) {
  30.        if (x.matchesWon !== y.matchesWon) {
  31.            return (y.matchesWon - x.matchesWon);
  32.        }
  33.  
  34.         if (x.setsWon !== y.setsWon) {
  35.             return (y.setsWon - x.setsWon);
  36.         }
  37.  
  38.         if (x.gamesWon !== y.gamesWon) {
  39.             return (y.gamesWon - x.gamesWon);
  40.         }
  41.  
  42.         return x.name.localeCompare(y.name);
  43.     });
  44.  
  45.  
  46.     function createPlayer(name) {
  47.         var player = {};
  48.         player.name = name;
  49.         player.matchesWon = 0;
  50.         player.matchesLost = 0;
  51.         player.setsWon = 0;
  52.         player.setsLost = 0;
  53.         player.gamesWon = 0;
  54.         player.gamesLost = 0;
  55.  
  56.         return player;
  57.     }
  58.  
  59.     function contains(player) {
  60.         for (var i in obj) {
  61.             if(obj[i].name === player) {
  62.                 return i;
  63.             }
  64.         }
  65.  
  66.         return null;
  67.     }
  68.  
  69.     function addScore(player, score, isHome) {
  70.         var sets = score.trim().split(/\s+/g);
  71.         var setsWon = 0;
  72.         var setsLost = 0;
  73.  
  74.         sets.forEach(function (set) {
  75.             var match = set.split('-');
  76.             player.gamesWon += (isHome) ? Number(match[0]) : Number(match[1]);
  77.             player.gamesLost += (!isHome) ? Number(match[0]) : Number(match[1]);
  78.  
  79.             if (Number(match[0]) > Number(match[1])) {
  80.                 setsWon = (isHome) ? setsWon + 1 : setsWon + 0;
  81.                 setsLost = (!isHome) ? setsLost + 1 : setsLost + 0;
  82.             } else {
  83.                 setsWon = (!isHome) ? setsWon + 1 : setsWon + 0;
  84.                 setsLost = (isHome) ? setsLost + 1 : setsLost + 0;
  85.             }
  86.         });
  87.  
  88.         player.setsWon += setsWon;
  89.         player.setsLost += setsLost;
  90.  
  91.         if (setsWon > setsLost) {
  92.             player.matchesWon += 1;
  93.         } else {
  94.             player.matchesLost += 1;
  95.         }
  96.  
  97.         return player;
  98.     }
  99.  
  100.     console.log(JSON.stringify(obj));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement