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

JavaScript で配列値の可能なすべての組み合わせを生成するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-04 02:45:29246ブラウズ

How to Generate All Possible Combinations of Array Values in JavaScript?

デカルト積: JavaScript での配列値の組み合わせの生成

問題の説明:

指定任意の数の JavaScript 配列がある場合、その要素のデカルト積を計算して、それらの値の可能なすべての組み合わせを効果的に生成するにはどうすればよいですか?

解決策:

この問題は順列に似ているかもしれませんが、これはデカルト積を伴う古典的なタスクです。再帰を使用すると、これを実現するアルゴリズムを実装できます。

  1. 配列の入力リストを定義します。

    <code class="js">var allArrays = [['a', 'b'], ['c'], ['d', 'e', 'f']];</code>
  2. 再帰的な allPossibleCases を作成します。 function:

    <code class="js">function allPossibleCases(arr) {
      if (arr.length === 1) {
        return arr[0];
      } else {
        var result = [];
        var allCasesOfRest = allPossibleCases(arr.slice(1)); // recur with the rest of array
        for (var i = 0; i < arr[0].length; i++) {
          for (var j = 0; j < allCasesOfRest.length; j++) {
            result.push(arr[0][i] + allCasesOfRest[j]);
          }
        }
        return result;
      }
    }</code>
  3. 配列の入力リストを使用して allPossibleCases 関数をインスタンス化し、結果を出力します:

    console.log(allPossibleCases(allArrays));

出力:

このコードは、入力配列内の値の可能なすべての組み合わせを次の形式で出力します:

["acd", "bcd", "azd", "bzd", "ace", "bce", "aze", "bze", "acf", "bcf", "azf", "bzf"]

このアルゴリズムは、指定された値のデカルト積を効率的に生成します。配列を使用して、その要素の徹底的な組み合わせを作成するという問題の解決策を提供します。

以上がJavaScript で配列値の可能なすべての組み合わせを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。