ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScriptでそれぞれM個の要素を持つN個の配列から可能なすべての組み合わせを生成するにはどうすればよいですか?

JavaScriptでそれぞれM個の要素を持つN個の配列から可能なすべての組み合わせを生成するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-30 16:27:11
オリジナル
876 人が閲覧しました

How to Generate All Possible Combinations from N Arrays with M Elements Each in JavaScript?

JavaScript で M 要素を含む N 配列からの組み合わせを生成する [重複]

はじめに
複数の配列から要素を組み合わせると、多数の組み合わせが得られる、これは統計分析や組み合わせ問題で不可欠であることがよくあります。この記事では、それぞれ 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート