Javascript Комбинированный генератор, основанный на количестве объектов N - PullRequest
0 голосов
/ 14 апреля 2020

Мне нужно сделать функцию, которая получает массив и генерирует все комбинации на основе размера N-параметра. Пример:

function comb([1,2],3)
out: 
[[1,1,1],
[1,1,2],
[1,2,1],
[1,2,2],
[2,1,1],
[2,1,2],
[2,2,1],
[2,2,2]]

или:

function comb([4,1],2)
out:
[[4,4],
[4,1],
[1,4],
[1,1]]

1 Ответ

0 голосов
/ 14 апреля 2020

Я нашел решение от Нина Шольц
JavaScript - Генерация комбинаций из n массивов с m элементами

, и я сделал адаптацию, это результат:

var result = 0;
function combination(parts,N){
    var parts_normalize = []
  while (N--) parts_normalize.push(parts)
    result = parts_normalize.reduce((a, b) => a.reduce((r, v) => r.concat(b.map(w => [].concat(v, w))), []));
  console.log(result)
}

это работает хорошо, но кто-то может объяснить, что происходит в этой функции xD я полностью потерян

...