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; }
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]);
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], // ... ]
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!