Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Menjana Produk Cartesian dengan Cekap daripada Susunan Pelbagai Panjang 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; }
Untuk menggunakan ini fungsi, hanya hantar tatasusunan anda sebagai argumen:
cartesian([0, 1], [0, 1, 2, 3], [0, 1, 2]);
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], ]
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!