Этот вопрос закрыт для ответов, так как повторяет вопрос Как найти все возможные комбинации чисел от 1 до n-1 чтобы их сумма была равна n?

Как найти все возможные комбинации числа из массива чисел?

допустим, есть массив [7, 8, 3, 4, 5, 6, 1, 2]
и есть число 8.

все возможные комбинации без повторений
[[1, 3, 4], [1, 2, 5], [3, 5], [2, 6], [1, 7], [8]]


как такое сделать?
  • Вопрос задан
  • 2491 просмотр
Решения вопроса 1
space2pacman
@space2pacman
Просто царь.
function getCombination(arr, n) {
  const sortedArr = JSON.parse(JSON.stringify(arr)).sort();
  const results = [];
  const part = [];

  for(let i = 0; i < sortedArr.length; i++) {
    part.push(sortedArr[i]);

    const summ = part.reduce((a, b) => a + b);
    
    if (summ === n) {
      results.push([...part]);
    }

    if (summ > n) {
      part.pop();

      i = sortedArr.indexOf(part[part.length - 1]);
      
      part.pop();
    }
  }

  return results;
}

console.log(getCombination([7, 8, 3, 4, 5, 6, 1, 2], 8)); 
// [[1, 2, 5], [1, 3, 4], [1, 7], [2, 6], [3, 5], [8]]
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы