はじめに
複数の配列から要素を組み合わせると、多数の組み合わせが得られる、これは統計分析や組み合わせ問題で不可欠であることがよくあります。この記事では、それぞれ M 個の要素を含む N 個の配列から可能なすべての組み合わせを生成する 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; }
使用法
生成するには配列のリストから組み合わせを取得するには、配列を引数としてデカルト関数に渡します。 function.
cartesian([0, 1], [0, 1, 2, 3], [0, 1, 2]);
結果は、可能なすべての組み合わせを含む配列になります:
[ [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], // ... ]
注
配列の配列を渡したい場合個々の引数の代わりに、関数シグネチャを関数 cartesian(args) に変更できます。
以上がJavaScriptでそれぞれM個の要素を持つN個の配列から可能なすべての組み合わせを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。