Skip to content

Sorts players into equivalent teams based on performance rating

Notifications You must be signed in to change notification settings

nguyenchr/team-up

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

team-up

Sorts players into equivalent teams based on performance rating

NPM

Build Status Dependencies Dev dependencies

using in your project

teamUp = require('team-up');

Ever wanted a programatic way to sort players into teams?

team-up allows you to pass in an array of players and have them automatically sorted into teams

Players will be first sorted in descending order by their performance attribute. Then distributed into teams

teamUp.sort(players, [options])

  • players (Array): The array of players to sort.
  • options Optional
    • numberOfTeams Number, Optional, Default: 2
    • sorter String, Optional, Default: schoolyard
    • field String, Optional, Default: performance
    • sortBy Function, Optional

Returns the sorted teams

Default sort

var players = [
  {id: 1, performance: 10, gamesPlayed: 3},
  {id: 2, performance: 30, gamesPlayed: 1},
  {id: 3, performance: 20, gamesPlayed: 4},
  {id: 4, performance: 50, gamesPlayed: 2}
]

var teams = teamUp.sort(players);

teams.should.eql(
  [{
    players: [
      {id: 4, performance: 50},
      {id: 3, performance: 20}
    ]
  },{
    players: [
      {id: 2, performance: 30},
      {id: 1, performance: 10}
    ]
  }]
)

Specifying field to sort by

var players = [
  {id: 1, performance: 10, gamesPlayed: 3},
  {id: 2, performance: 30, gamesPlayed: 1},
  {id: 3, performance: 20, gamesPlayed: 4},
  {id: 4, performance: 50, gamesPlayed: 2}
]

var teams = teamUp.sort(players, {field: 'gamesPlayed'});

teams.should.eql(
  [{
    players: [
      {id: 3, performance: 20, gamesPlayed: 4},
      {id: 4, performance: 50, gamesPlayed: 2}
    ]
  },{
    players: [
      {id: 1, performance: 10, gamesPlayed: 3},
      {id: 2, performance: 30, gamesPlayed: 1}
    ]
  }]
)

Specifying sortBy function

var players = [
  {id: 1, performance: 10, gamesPlayed: 3},
  {id: 2, performance: 30, gamesPlayed: 1},
  {id: 3, performance: 20, gamesPlayed: 4},
  {id: 4, performance: 50, gamesPlayed: 2}
]

var sortBy = function(player, index) {
  return player.id + player.gamesPlayed
}

var teams = teamUp.sort(players, {field: 'gamesPlayed'});

teams.should.eql(
  [{
    players: [
      {id: 3, performance: 20, gamesPlayed: 4},
      {id: 1, performance: 10, gamesPlayed: 3}
    ]
  },{
    players: [
      {id: 4, performance: 50, gamesPlayed: 2},
      {id: 2, performance: 30, gamesPlayed: 1}
    ]
  }]
)

Specifying numberOfTeams

var players = [
  {id: 1, performance: 10, gamesPlayed: 3},
  {id: 2, performance: 30, gamesPlayed: 1},
  {id: 3, performance: 20, gamesPlayed: 4},
  {id: 4, performance: 50, gamesPlayed: 2}
]

var teams = teamUp.sort(players, {numberOfTeams: 4});

teams.should.eql(
  [{
    players: [
      {id: 4, performance: 50}
    ]
  },{
    players: [
      {id: 2, performance: 30}
    ]
  },{
    players: [
      {id: 3, performance: 20}
    ]
  },{
    players: [
      {id: 1, performance: 10}
    ]
  }]
)

sorters

Currently only supports schoolyard sort.

schoolyard sort

Modeled after the old-fashioned method used by kids to divide into teams. Where 2 captains are nominated who each take it in turn to choose the next best player until there are no players remaining.

About

Sorts players into equivalent teams based on performance rating

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published