dist-javascript-algorithms-and-data-structures
Version:
Algorithms and data-structures implemented on JavaScript
29 lines (24 loc) • 815 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = combineWithoutRepetitions;
/**
* @param {*[]} comboOptions
* @param {number} comboLength
* @return {*[]}
*/
function combineWithoutRepetitions(comboOptions, comboLength) {
if (comboLength === 1) {
return comboOptions.map(comboOption => [comboOption]);
} // Init combinations array.
const combos = []; // Eliminate characters one by one and concatenate them to
// combinations of smaller lengths.
comboOptions.forEach((currentOption, optionIndex) => {
const smallerCombos = combineWithoutRepetitions(comboOptions.slice(optionIndex + 1), comboLength - 1);
smallerCombos.forEach(smallerCombo => {
combos.push([currentOption].concat(smallerCombo));
});
});
return combos;
}