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));