Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript,从多个数组中获取所有唯一的组合_Javascript_Generator_Combinations - Fatal编程技术网

JavaScript,从多个数组中获取所有唯一的组合

JavaScript,从多个数组中获取所有唯一的组合,javascript,generator,combinations,Javascript,Generator,Combinations,我正在寻找一种从多个数组生成所有可能组合的方法。当涉及到1时,我能够找到解决方案,但是当涉及到更多时,就会出现问题。为了更容易理解我的问题,假设我们有两个数组:['small'、'big']和['red'、'green'],我试图得到的结果是: 绿色小球、红色小球、绿色小球、红色小球、绿色小球、红色小球、小球、大小球、绿色小球、红色小球等 对我来说,最大的困难是要弄清楚如何使每个数组都不会有任何重复,例如:大小球或绿红色小球。使用嵌套for循环。使用for of,您可以轻松循环阵列中的每个对象:

我正在寻找一种从多个数组生成所有可能组合的方法。当涉及到1时,我能够找到解决方案,但是当涉及到更多时,就会出现问题。为了更容易理解我的问题,假设我们有两个数组:['small'、'big']和['red'、'green'],我试图得到的结果是:

绿色小球、红色小球、绿色小球、红色小球、绿色小球、红色小球、小球、大小球、绿色小球、红色小球等


对我来说,最大的困难是要弄清楚如何使每个数组都不会有任何重复,例如:大小球或绿红色小球。

使用嵌套for循环。使用for of,您可以轻松循环阵列中的每个对象: let size=['small','medium size','big'] 让颜色=[“绿色”、“红色”、“蓝色”] 让对象=['ball'、'square'] 尺码{ 颜色的颜色{ 用于对象的对象{ console.logsize、颜色、对象 } } } 这是我的解决办法

let size=['small','medium size','big'] 让颜色=[“绿色”、“红色”、“蓝色”] 让对象=['ball'、'square'] 常量展平=列表=>list.reduce a、 b=>a.concatArray.isArrayb?b:b,[] ; 函数uniqeCombine…数据{ 常数平坦=平坦数据; 返回平面。减小acc,v,i=> acc.concatflat.slicei+1.map w=>v+''+w, []; }
console.loguniqeCombinesizes、colors、objects虽然这主要起作用,但在结果示例中,我显示了两个数组中的元素可以位于任何位置,例如:绿色大球或绿色大球我添加了一个代码剪断,该代码应该满足您的要求。您是否只需要项的笛卡尔积,或者,您是否在寻找所有可能的组合,无论它们是否在内容中重复,但不按顺序重复?正如问题所述,不应该从同一数组中重复。