Вы можете взять генератор и взять только один элемент или результат.
function* getCombinations(array, length, left = []) {
var i = 0;
if (!length) yield left;
while (i < array.length) {
yield* getCombinations(array.slice(i + 1), length - 1, [...left, array[i]]);
i++;
}
}
console.log([...getCombinations([1, 2, 3, 4, 5], 4)].map(a => a.join(' ')));
console.log([...getCombinations([2, 4, 6], 2)].map(a => a.join(' ')));
console.log([...getCombinations([1, 2, 3, 4, 5], 3)].map(a => a.join(' '))); // not asked
.as-console-wrapper { max-height: 100% !important; top: 0; }
Для удаления только одного элемента вы можете отфильтровать массив.
function* getCombinations(array) {
var l = array.length;
while (l--) yield array.filter((_, i) => i !== l);
}
console.log([...getCombinations([1, 2, 3, 4, 5], 4)].map(a => a.join(' ')));
console.log([...getCombinations([2, 4, 6], 2)].map(a => a.join(' ')));
.as-console-wrapper { max-height: 100% !important; top: 0; }