Group Teams

JS Only - Divide an array into roughly equal sized groups

by Stephen

JavaScript

function groupTeams(teams, group_count) {
    const groups = Array(group_count).fill(null)
                   .map(() => ([]));

    for ( let i = 0; i < teams.length; i++ ) {
        groups[i % group_count].push( teams[i] );
    }

    return groups;
}

let teams = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];

// Example with 4 groups
let groupedTeams = groupTeams( teams, 4 );
let group_totals = groupedTeams.map( g => g.length );
console.log(group_totals);
console.log(groupedTeams);

// Do it again with 3 groups
groupedTeams = groupTeams( teams, 3 );
group_totals = groupedTeams.map( g => g.length );
console.log(group_totals);
console.log(groupedTeams);