Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menjana Produk Cartesian dengan Cekap daripada Susunan Pelbagai Panjang dalam JavaScript?

Bagaimana untuk Menjana Produk Cartesian dengan Cekap daripada Susunan Pelbagai Panjang dalam JavaScript?

Susan Sarandon
Lepaskan: 2024-11-30 01:52:10
asal
781 orang telah melayarinya

How to Efficiently Generate Cartesian Products from Arrays of Varying Lengths in JavaScript?

Penjanaan Produk Cartesian untuk Mempelbagaikan Tatasusunan dalam JavaScript

Untuk menjana semua kemungkinan gabungan elemen yang diambil daripada set tatasusunan dengan panjang yang berbeza-beza, pengaturcara JavaScript menghadapi cabaran yang unik. Menyesuaikan penyelesaian untuk mengendalikan bilangan dinamik tatasusunan boleh menjadi rumit.

Pendekatan yang mudah dan cekap ialah menggunakan fungsi pembantu rekursif seperti yang digambarkan di bawah:

function cartesian(...args) {
  var r = [], max = args.length - 1;
  function helper(arr, i) {
    for (var j = 0, l = args[i].length; j < l; j++) {
      var a = arr.slice(0); // clone arr
      a.push(args[i][j]);
      if (i == max) r.push(a);
      else helper(a, i + 1);
    }
  }
  helper([], 0);
  return r;
}
Salin selepas log masuk

Untuk menggunakan ini fungsi, hanya hantar tatasusunan anda sebagai argumen:

cartesian([0, 1], [0, 1, 2, 3], [0, 1, 2]);
Salin selepas log masuk

Output akan mengandungi semua kemungkinan gabungan elemen daripada yang disediakan tatasusunan:

[
  [0, 0, 0],
  [0, 0, 1],
  [0, 0, 2],
  [0, 1, 0],
  [0, 1, 1],
  [0, 1, 2],
  [0, 2, 0],
  [0, 2, 1],
  [0, 2, 2],
]
Salin selepas log masuk

Untuk tatasusunan tatasusunan, laraskan tandatangan fungsi untuk berfungsi cartesian(args) dan bukannya menggunakan parameter rehat. Pendekatan ini membolehkan untuk mengendalikan sebarang bilangan tatasusunan dengan kiraan elemen yang berbeza-beza, memberikan penyelesaian yang fleksibel kepada masalah gabungan ini.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Produk Cartesian dengan Cekap daripada Susunan Pelbagai Panjang 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