Javascript:如何将数组值作为参数传递给要使用Function :: arguments读取的函数

时间:2012-06-07 20:16:33

标签: javascript

我承认,这是一个非常奇怪的问题。

我想用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]];

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

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

1 个答案:

答案 0 :(得分:3)

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