2D配列のサブ配列の間にデカルト積を作成しようとしています。 私の2dArrayは次のようになります:var matrix = [[1,2,3], [4,5], [6,7,8],[9,10,11]];
ですが、可変数の配列を持つことができます。私が使用2D配列の配列のデカルト積
機能は次のとおりです。
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;
}, [[]]);
}
私はのような機能を使用しようとしました:cartesianProductOf(matrix)
が、これはすべての結果を返しません。
私の問題は、この関数のパラメータとしてサブ配列を与える方法ですか?サブ配列で2次元配列を分割する方法や、私の場合に機能するように関数を変更する方法は?
誰もこの問題を解決する方法を知っていますか?
更新: http://jsfiddle.net/XHEJt/10/
var matrix = [[1,2,3], [4,5], [6,7,8],[9,10,11]];
console.log(cartesianProductOf([1,2,3], [4,5], [6,7,8],[9,10,11]));
//the following line does not produce the same output
console.log(cartesianProductOf(matrix));
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;
}, [[]]);
}
https://stackoverflow.com/a/12628791/6051131 – Rahel
ありがとうございますが、これは私の質問と似ていません。私の問題は、この関数のパラメータとしてサブ配列を与える方法です。サブ配列で2次元配列を分割する方法や、私の場合に機能するように関数を変更する方法は? – HelenA
ここに例があります:[link](http://jsfiddle.net/XHEJt/10/) – HelenA