さまざまな長さの配列のセットから取得した要素の可能なすべての組み合わせを生成するために、JavaScript プログラマーは独特の課題に直面しています。動的な配列数を処理するソリューションのカスタマイズは難しい場合があります。
シンプルで効率的なアプローチは、以下に示すような再帰ヘルパー関数を使用することです。
function cartesian(...args) { var r = [], max = args.length - 1; function helper(arr, i) { for (var j = 0, l = args[i].length; j < l; j++) { var a = arr.slice(0); // clone arr a.push(args[i][j]); if (i == max) r.push(a); else helper(a, i + 1); } } helper([], 0); return r; }
これを利用するには関数の場合は、配列を引数として渡すだけです:
cartesian([0, 1], [0, 1, 2, 3], [0, 1, 2]);
出力には、提供された要素の可能なすべての組み合わせが含まれます。 arrays:
[ [0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 1, 0], [0, 1, 1], [0, 1, 2], [0, 2, 0], [0, 2, 1], [0, 2, 2], ]
配列の配列の場合、残りのパラメーターを使用する代わりに関数のシグネチャを function cartesian(args) に調整します。このアプローチにより、要素数が異なる任意の数の配列を処理できるようになり、この組み合わせ問題に対する柔軟なソリューションが提供されます。
以上がJavaScript でさまざまな長さの配列からデカルト積を効率的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。