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

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

Barbara Streisand
Barbara Streisandオリジナル
2024-12-21 11:28:10125ブラウズ

How to Calculate the Cartesian Product of Multiple Arrays in JavaScript?

JavaScript での複数の配列のデカルト積

デカルト積の紹介

数学では、複数の集合のデカルト積は、可能なすべての集合です。これらのセットからの要素の順序付けされた組み合わせ。たとえば、セット [1, 2] と [10, 20, 300] のデカルト積は { [1, 10], [1, 20], [1, 300], [2, 10], [2, 20], [2, 300] }.

での実装JavaScript

1 行の JavaScript ソリューション (2020 更新)

最新の JavaScript 機能を活用した、たった 1 行の非常に簡潔なソリューションです。

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

2 行のバニラ JavaScriptソリューション

2020 年の更新前は、これが最も短いバニラ JavaScript ソリューションでした:

let f = (a, b) => [].concat(...a.map(a => b.map(b => [].concat(a, b))));
let cartesian = (a, b, ...c) => b ? cartesian(f(a, b), ...c) : a;

使用例

入力配列を検討してください:

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

デカルト積を計算するには、次の関数を呼び出すことができます。デカルト関数:

const output = cartesian(...input);

出力変数には、予想されるデカルト積が含まれます:

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

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