Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menjana Semua Kemungkinan Gabungan daripada N Arrays dengan M Elements Setiap dalam JavaScript?

Bagaimana untuk Menjana Semua Kemungkinan Gabungan daripada N Arrays dengan M Elements Setiap dalam JavaScript?

Patricia Arquette
Lepaskan: 2024-11-30 16:27:11
asal
909 orang telah melayarinya

How to Generate All Possible Combinations from N Arrays with M Elements Each in JavaScript?

Menjana Gabungan daripada N Arrays dengan M Elements dalam JavaScript [Pendua]

Pengenalan
Menggabungkan elemen daripada berbilang tatasusunan boleh menghasilkan banyak kombinasi , yang selalunya penting dalam analisis statistik atau masalah gabungan. Artikel ini membentangkan penyelesaian komprehensif dalam JavaScript untuk menjana semua gabungan yang mungkin daripada tatasusunan N, setiap satu mengandungi elemen M.

Pendekatan Rekursif
Penyelesaian yang disediakan menggunakan fungsi pembantu rekursif untuk membina kombinasi secara berperingkat. Fungsi ini berulang melalui setiap tatasusunan, termasuk elemennya dalam gabungan yang terhasil. Jika tatasusunan semasa ialah yang terakhir, gabungan yang lengkap akan ditambahkan pada tatasusunan hasil. Jika tidak, fungsi itu berulang dengan gabungan yang dikemas kini dan meneruskan ke tatasusunan seterusnya.

Pelaksanaan

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

Penggunaan
Untuk menjana gabungan daripada senarai tatasusunan, kami lulus tatasusunan sebagai hujah kepada cartesian fungsi.

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

Hasilnya ialah tatasusunan yang mengandungi semua gabungan yang mungkin:

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

Nota
Jika kita lebih suka menghantar tatasusunan bukannya argumen individu, kita boleh mengubah suai tandatangan fungsi untuk berfungsi cartesian(args).

Atas ialah kandungan terperinci Bagaimana untuk Menjana Semua Kemungkinan Gabungan daripada N Arrays dengan M Elements Setiap 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