基于N个对象的Javascript组合生成器

时间:2020-04-13 21:01:43

标签: javascript combinations permutation

我需要制作一个函数,该函数接收数组并根据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 :(得分:0)

我从Nina Scholz找到了一个解决方案
JavaScript - Generating combinations from n arrays with m elements

我进行了改编,这是结果:

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我完全迷失了此功能

相关问题