0.0.1 • Published 10 years ago

team-up v0.0.1

Weekly downloads
2
License
MIT
Repository
github
Last release
10 years ago

team-up

Sorts players into equivalent teams based on performance rating

Build Status

Dependency Status devDependency Status

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.