Как на JS получить все возможные сочетания без повторов?

Нашел аналогичный вопрос, но не могу переделать ответ:

const combinations = combine2(array, k);
console.log("итого:", combinations);

function combine2(array, k) {
  const n = array.length - 1; // максимальный индекс массива элементов
  const m = k - 1; // максимальный индекс массива-маски сочетания
  const finds = []; // массив всех возможных осчетаний
  const mask = []; // маска сочетания
  let finish = false;
  for (let i = 0; i < k; i++) mask.push(array[i]);
  while (!finish) {
    finish = true;
    const str = mask.join('');
    if (!finds.includes(str)) finds.push(str); // записываем сочетание в массив
   for (let i = 0; i < k; i++) {
      if (mask[m - i] != array[n - i]) {
    // проверяем, остались ли еще сочетания
        finish = false;
        let p = array.indexOf(mask[m - i]);
        mask[m - i] = array[++p]; // изменяем маску, начиная с последнего элемента
        for (let j = m - i + 1; j < k; j++) {
          mask[j] = array[++p];
        }
        break;
      }
    }
  }
  return finds;
}

чтобы получался список списков int.

Например, дан список:

const array = [2, 3, 4, 5]; // множество элементов
const k = 2; // размер сочетаний

Нужно получить:

const combinations = combine2(array, k), как:
[[2, 3], [2, 4], [2, 5], [3, 4], [3, 5], [4, 5]]

Ответы (0 шт):