JSFiddle - React, Tailwind, and code Playground

by adelura

JavaScript

function peeps(peopleToBeAllocated, availableSpaces) {
  peopleToBeAllocated = peopleToBeAllocated.slice();

  if (availableSpaces === 1) {
    return peopleToBeAllocated;
  }

  var combinations = [];
  for (var i = 0; i <= peopleToBeAllocated.length + 1; i++) {
    var firstPerson = peopleToBeAllocated.shift();

    var newPeeps = peeps(peopleToBeAllocated, availableSpaces - 1).map(
      combination => [firstPerson].concat(combination)
    );
    combinations = combinations.concat(newPeeps);
  }
  return combinations;
}

console.log(peeps(['Artur', 'Beata', 'Laura', 'Mo', 'Jen'], 3));