ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で複数の配列のデカルト積を計算するにはどうすればよいですか?

JavaScript で複数の配列のデカルト積を計算するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-15 14:10:22144ブラウズ

How Can I Calculate the Cartesian Product of Multiple Arrays in JavaScript?

JavaScript における複数の配列のデカルト積

JavaScript は、複数の配列のデカルト積を求める簡単な方法を提供します。デカルト積では、各配列の要素を組み合わせて新しい配列を形成し、可能なすべての組み合わせが得られます。

たとえば、配列 [1, 2] と [10, 20] が与えられた場合、デカルト積は次のようになります。 [[1, 10], [1, 20], [2, 10], [2, 20]].

最新の 1 行ソリューションJavaScript (ECMAScript 2020):

const cartesian = (...a) => a.reduce((a, b) => a.flatMap(d => b.map(e => [d, e].flat())));

ソリューションの詳細:

このソリューションは 2 つの主要な JavaScript 機能を採用しています:

  1. Spread Operator ( ...): この演算子は、配列を個別の引数に分散し、それらを指定できるようにするために使用されます。
  2. Array.reduce(...): これは、配列を再帰的に結合するために使用され、各ステップで次の処理が実行されます。

    • flatMap() メソッドを使用して現在の結果配列を平坦化します。
    • 次の結果を反復します。 array.
    • 次の配列の各要素を平坦化された結果に追加します。
    • 結果を再度平坦化します。

例:

let output = cartesian([1, 2], [10, 20], [100, 200, 300]);

これはプロデュース:

[[1, 10, 100],
 [1, 10, 200],
 [1, 10, 300],
 [1, 20, 100],
 [1, 20, 200],
 [1, 20, 300],
 [2, 10, 100],
 [2, 10, 200],
 [2, 10, 300],
 [2, 20, 100],
 [2, 20, 200],
 [2, 20, 300]]

JavaScript は進化し続けており、ECMAScript 2020 で導入された新機能により、より簡潔で効率的なコードを作成できるようになります。この改善されたソリューションは、複雑な問題に対する最新の JavaScript の威力を実証します。

以上がJavaScript で複数の配列のデカルト積を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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