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

Bagaimana untuk Mengira Produk Cartesan Berbilang Tatasusunan dengan Cekap dalam JavaScript?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-31 05:55:18999semak imbas

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

Melaksanakan Produk Cartesian Berbilang Tatasusunan dalam JavaScript

Produk Cartesian berbilang tatasusunan terdiri daripada setiap gabungan elemen yang mungkin daripada tatasusunan input. Operasi ini penting untuk menjana semua kemungkinan gabungan atau pilih atur daripada set data.

Jawapan 1 Baris (ES2020)

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

Penjelasan

Produk Cartesian dikira dalam perkara berikut cara:

  1. Kurangkan: Gunakan kaedah ini untuk mengulangi setiap tatasusunan dan menggabungkannya.
  2. flatMap: Ratakan tatasusunan yang dikurangkan dengan menggabungkan semua kemungkinan gabungan elemen daripada dua input tatasusunan.
  3. rata: Permudahkan tatasusunan bersarang dengan mengalih keluar tatasusunan atau elemen kosong.

Contoh

Kepada gunakan produk Cartesian pada tatasusunan dengan nilai, pertimbangkan perkara berikut contoh:

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

Keluaran yang dijangkakan ialah:

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

Ini menunjukkan pengiraan semua kemungkinan gabungan elemen daripada tatasusunan yang diberikan, menghasilkan produk Cartesian yang lengkap.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Produk Cartesan Berbilang Tatasusunan dengan Cekap 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