JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで配列要素のすべての組み合わせを取得する方法

JavaScriptでは、独自の関数を定義することで、配列内の値のすべての組み合わせを簡単に取得できます。ジェネレーター関数(function*)を再帰的に利用すると、コードを簡潔に保ちながら組み合わせを効率的に生成することが可能です。

実装例

以下のコードは、渡された配列の値から重複を許可したすべての組み合わせを生成する例です。

function combination(values) {
   function * combinationRepeat(size, v) {
      if (size)
         for (var chr of values)
      yield * combinationRepeat(size - 1, v + chr);
      else yield v;
   }
   return [...combinationRepeat(values.length, "")];
}
var output = combination([4,5]);
console.log(output);

このプログラムの仕組みを簡単に説明します。

処理の流れ

内部で定義された combinationRepeat はジェネレーター関数であり、指定されたサイズ(ここでは元の配列の長さ)に達するまで、配列の各要素を順番に結合しながら自分自身を再帰的に呼び出します。サイズが0になった時点で、組み立てられた文字列を yield で返します。最終的に、スプレッド構文 [...] を使ってジェネレーターが返すすべての値を配列としてまとめています。

実行方法

上記のプログラムを実行するには、Node.js環境で以下のコマンドを使用します。

node fileName.js.

ここでは、ファイル名を demo306.js として保存しています。

出力結果

このコードを実行すると、次のような出力が得られます。

PS C:\Users\Amit\javascript-code> node demo306.js
[ '44', '45', '54', '55' ]

ご覧のとおり、配列 [4, 5] の各要素を使った2桁の組み合わせ「44」「45」「54」「55」がすべて出力されています。同じ要領で配列の要素数や値を変更すれば、任意のパターンの組み合わせを柔軟に生成できます。

  1. JavaScriptで配列をreduceする方法|reduce()メソッドで配列要素を合計する

    JavaScriptのreduce()メソッドは、配列の各要素を先頭から順に処理し、その結果を1つの値にまとめる(畳み込む)ための配列メソッドです。数値の合計を求めるだけでなく、配列からオブジェクトを組み立てたり、条件に応じてデータを集約したりと、幅広い場面で活用されています。reduce()メソッドの基本構文 { return 戻り値; }, 初期値);accumulator(アキュムレータ):直前のコールバック関数が返した値(累積値)。最初のループでは初期値、または配列の第1要素が代入されます。currentValue:現在処理している配列の要素。初期値:累積値の出発点となる値。省略し

  2. JavaScript配列から一意の値(重複なし)を取得する方法

    JavaScriptの配列に含まれる重複した値を取り除き、一意の値(ユニークな値)だけを取得したい場合は、Setオブジェクトを使うのが最もシンプルで効率的な方法です。 Setは同じ値を1つしか格納できないデータ構造のため、配列をnew Set()に渡すだけで自動的に重複が排除されます。その後、スプレッド構文([...set])を使えば、簡単に元の配列形式へ戻すことができます。 サンプルコード 以下は、JavaScriptの配列からすべての一意の値を取得する実際のコード例です。 <!DOCTYPE html> <html lang=ja> <head> <