Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var obj = [];
- input.forEach(function (match) {
- var tokens = match.split(':');
- var players = tokens[0].split(/vs./);
- var tempObj = 0;
- var homePlayer = players[0].split(/\s+/g).join(' ').trim();
- var awayPlayer = players[1].split(/\s+/g).join(' ').trim();
- if (!(tempObj = contains(homePlayer))) {
- var player = createPlayer(homePlayer)
- player = addScore(player, tokens[1], true);
- obj.push(player);
- } else {
- obj[tempObj] = addScore(obj[tempObj], tokens[1], true);
- }
- if (!(tempObj = contains(awayPlayer))) {
- var player = createPlayer(awayPlayer);
- player = addScore(player, tokens[1], false);
- obj.push(player);
- } else {
- obj[tempObj] = addScore(obj[tempObj], tokens[1], false);
- }
- });
- obj.sort(function (x, y) {
- if (x.matchesWon !== y.matchesWon) {
- return (y.matchesWon - x.matchesWon);
- }
- if (x.setsWon !== y.setsWon) {
- return (y.setsWon - x.setsWon);
- }
- if (x.gamesWon !== y.gamesWon) {
- return (y.gamesWon - x.gamesWon);
- }
- return x.name.localeCompare(y.name);
- });
- function createPlayer(name) {
- var player = {};
- player.name = name;
- player.matchesWon = 0;
- player.matchesLost = 0;
- player.setsWon = 0;
- player.setsLost = 0;
- player.gamesWon = 0;
- player.gamesLost = 0;
- return player;
- }
- function contains(player) {
- for (var i in obj) {
- if(obj[i].name === player) {
- return i;
- }
- }
- return null;
- }
- function addScore(player, score, isHome) {
- var sets = score.trim().split(/\s+/g);
- var setsWon = 0;
- var setsLost = 0;
- sets.forEach(function (set) {
- var match = set.split('-');
- player.gamesWon += (isHome) ? Number(match[0]) : Number(match[1]);
- player.gamesLost += (!isHome) ? Number(match[0]) : Number(match[1]);
- if (Number(match[0]) > Number(match[1])) {
- setsWon = (isHome) ? setsWon + 1 : setsWon + 0;
- setsLost = (!isHome) ? setsLost + 1 : setsLost + 0;
- } else {
- setsWon = (!isHome) ? setsWon + 1 : setsWon + 0;
- setsLost = (isHome) ? setsLost + 1 : setsLost + 0;
- }
- });
- player.setsWon += setsWon;
- player.setsLost += setsLost;
- if (setsWon > setsLost) {
- player.matchesWon += 1;
- } else {
- player.matchesLost += 1;
- }
- return player;
- }
- console.log(JSON.stringify(obj));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement