Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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_Combinations_Cartesian Product - Fatal编程技术网

Javascript 生成阵列的完整(所有大小)组合

Javascript 生成阵列的完整(所有大小)组合,javascript,combinations,cartesian-product,Javascript,Combinations,Cartesian Product,如何生成多个阵列的完全组合 const source = [ ["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"] ]; const result = combination(source); 需要结果,如笛卡尔积,但具有各种大小的组合: ["a"] ["a", "d"] ["a", "d", "g"] ... ["b"] ... ["b", "f", "i"] ... ["i"] 这个怎么样: function cartesianProduct

如何生成多个阵列的完全组合

const source = [ ["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"] ];
const result = combination(source);
需要结果,如笛卡尔积,但具有各种大小的组合:

["a"]
["a", "d"]
["a", "d", "g"]
...
["b"]
...
["b", "f", "i"]
...
["i"]
这个怎么样:

function cartesianProduct(arrArr) {
  if (arrArr.length === 0) return [];

  const [firstArr, ...restArrs] = arrArr;
  const partialProducts = cartesianProduct(restArrs || []);

  let ret = firstArr.map(elem => [elem]);
  ret = ret.concat(partialProducts);
  ret = ret.concat(partialProducts.reduce((acc, product) => {
    return acc.concat(firstArr.map(elem => [elem].concat(product)));
  }, []));

  return ret;
}

你试过什么,伙计?谢谢,正是你所需要的!