Для генерации комбинаций в JavaScript можно использовать различные подходы и алгоритмы. В данном ответе я рассмотрю самый простой и понятный способ - рекурсивную функцию.
Для начала, определимся, что мы хотим подобрать комбинации элементов из заданного набора. Например, пусть у нас есть массив чисел [1, 2, 3]
, и мы хотим получить все возможные комбинации из этих чисел. В результате получим следующие комбинации:
[1]
[2]
[3]
[1, 2]
[1, 3]
[2, 3]
[1, 2, 3]
Теперь перейдем к коду. Наш алгоритм будет следующим:
- Создаем пустой массив
result
, в котором будем хранить все комбинации. - Создаем рекурсивную функцию
generateCombinations
, которая принимает три аргумента:source
,currentCombination
иcurrentIndex
. - Внутри функции проверяем условие выхода из рекурсии. Если
currentIndex
становится больше или равно длинеsource
, то добавляем текущую комбинацию вresult
и выходим из функции. - Если условие выхода не выполняется, то для каждого элемента
source
начиная сcurrentIndex
, вызываем рекурсивно функциюgenerateCombinations
, передавая в качестве аргументов измененные значенияcurrentCombination
(добавляем в нее текущий элемент) иcurrentIndex
(увеличиваем на 1). - По завершению работы функции
generateCombinations
, возвращаем массивresult
.
Давайте реализуем этот алгоритм в коде:
function generateCombinations(source) { var result = []; generate([], 0); function generate(currentCombination, currentIndex) { if (currentIndex >= source.length) { result.push(currentCombination); return; } generate(currentCombination.concat(source[currentIndex]), currentIndex + 1); generate(currentCombination, currentIndex + 1); } return result; } var source = [1, 2, 3]; var combinations = generateCombinations(source); console.log(combinations);
При запуске этого кода в консоли браузера вы увидите массив со всеми комбинациями чисел [1, 2, 3]
.