Sorts players into equivalent teams based on performance rating
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
- 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
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}
]
}]
)
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}
]
}]
)
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}
]
}]
)
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}
]
}]
)
Currently only supports 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.