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]];

事前に配列の数がわからないときにarrOfArr、(個々の配列のように)の内容を複数のパラメーターとして渡して機能させるにはどうすればよいですか?ProductarrOfArr

つまり、product(arrOfArr)は明らかに機能しません。

4

1 に答える 1

3

うーん、よくあることですが、質問を書いた後、あなたは答えを知っています;)cartesianProductOf.apply(null,arrOfArr);

于 2012-06-07T20:24:10.850 に答える