UNPKG

dist-javascript-algorithms-and-data-structures

Version:

Algorithms and data-structures implemented on JavaScript

29 lines (24 loc) 815 B
"use strict"; 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; }