3

我承认,这个问题看起来很奇怪。

我想在 javascript 中计算数组数组的笛卡尔积以下函数(来自https://stackoverflow.com/questions/4796678/javascript-golf-cartesian-product)为我执行此操作:

function cartesianProductOf() {
  return Array.prototype.reduce.call(arguments, function(a, b) {
    var ret = [];
    a.forEach(function(a) {
      b.forEach(function(b) {
        ret.push(a.concat([b]));
      });
    });
    return ret;
  }, [[]]);
}

但是,它需要这样调用: product([1, 2, 3], [4], [5, 6]); # => [[1, 4, 5], [1, 4, 6], [2, 4, 5], [2, 4, 6], [3, 4, 5], [3, 4, 6]]

但我所拥有的是一个维度未知的数组数组,按照上面的例子可以说:

var arrOfArr = [[1, 2, 3], [4], [5, 6]];

当我事先不知道数组的 nr 时,我如何将arrOfArr(如在单个数组中)的内容作为多个参数传递给函数?ProductarrOfArr

即: product(arrOfArr) 显然不起作用。

4

1 回答 1

3

嗯,通常情况下,写完问题后你就知道答案了;)cartesianProductOf.apply(null,arrOfArr);

于 2012-06-07T20:24:10.850 回答