Как составить все возможные сочетания из элементов одного массива, но размер сочетания = N?

У меня есть массив чисел в котором нет одинаковых цифр.
[1,2,3,4,5,6,7,8,9...]
Как мне составить все возможные комбинации, где размер комбинации я буду указывать самостоятельно?
Например, у меня есть массив из 20 чисел, но нужны все возможные комбинации состоящие из 3 цифр этого массива.

PS: Вообще мне это нужно для строкового массива, но для простоты возьмём числа.
  • Вопрос задан
  • 285 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
const combinations = (arr, num) => {
  const result = [];
  const comb = (arr, n, idx, cur) => {
    for (let i = idx; i <= arr.length - n; i += 1) {
      cur.push(arr[i]);
      if (n === 1) {
        result.push([...cur]);
      } else {
        comb(arr, n - 1, i + 1, cur);
      }
      cur.pop();
    }
  };
  comb(arr, num, 0, []);
  return result;
}
console.log(combinations([1, 2, 3, 4], 3));
// Array(4) [ (3) […], (3) […], (3) […], (3) […] ]
​//   0: Array(3) [ 1, 2, 3 ]
//​   1: Array(3) [ 1, 2, 4 ]
​//   2: Array(3) [ 1, 3, 4 ]
​//   3: Array(3) [ 2, 3, 4 ]
/​/   length: 4
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы