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
Lepaskan: 2024-12-21 11:28:10
asal
116 orang telah melayarinya

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())));
Salin selepas log masuk

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;
Salin selepas log masuk

Contoh Penggunaan

Pertimbangkan tatasusunan input:

input = [1, 2], [10, 20], [100, 200, 300]
Salin selepas log masuk

Untuk mengira produk Cartesian, kita boleh menggunakan cartesian fungsi:

const output = cartesian(...input);
Salin selepas log masuk

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]]
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan