Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengira Produk Cartesian Berbilang Tatasusunan dalam JavaScript?

Bagaimana untuk Mengira Produk Cartesian Berbilang Tatasusunan dalam JavaScript?

Barbara Streisand
Barbara Streisandasal
2024-12-21 11:28:10119semak imbas

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

Cartesian Product of Multiple Arrays dalam JavaScript

Memperkenalkan Cartesian Product

Dalam matematik, Cartesian product of multiple sets ialah set semua kemungkinan gabungan tertib unsur daripada set tersebut. Sebagai contoh, hasil darab Cartes bagi set [1, 2] dan [10, 20, 300] ialah { [1, 10], [1, 20], [1, 300], [2, 10], [2, 20], [2, 300] }.

Pelaksanaan dalam JavaScript

Penyelesaian JavaScript 1 Baris (Kemas Kini 2020)

Memanfaatkan kuasa ciri JavaScript moden, berikut ialah penyelesaian ultra ringkas yang merangkumi hanya satu baris:

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

JavaScript Vanila 2 Baris Penyelesaian

Sebelum kemas kini 2020, ini ialah penyelesaian JavaScript vanila terpendek:

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;

Contoh Penggunaan

Pertimbangkan tatasusunan input:

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

Untuk mengira produk Cartesian, kita boleh menggunakan cartesian fungsi:

const output = cartesian(...input);

Pembolehubah keluaran akan mengandungi produk Cartes yang dijangkakan:

[[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]]

Atas ialah kandungan terperinci Bagaimana untuk Mengira Produk Cartesian Berbilang Tatasusunan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn