Rumah > Artikel > hujung hadapan web > Bagaimana untuk Memilih Item Tatasusunan Secara Rambang Tanpa Pengulangan?
Anda telah mencipta fungsi yang memilih item secara rawak daripada tatasusunan, memastikan pilihan terkini tidak berulang. Walaupun penyelesaian semasa berfungsi dengan berkesan, anda mempunyai kebimbangan tentang kecekapannya dan sama ada ia boleh menyebabkan gelung yang berlebihan. Mari kita teroka pendekatan yang lebih cekap.
1. Pertimbangan Rekursi
Ya, fungsi chooseName() anda boleh dianggap rekursif kerana ia memanggil dirinya sendiri sehingga ia menemui nama unik. Rekursi boleh berguna untuk masalah tertentu, tetapi penting untuk mengambil kira penggunaan tindanan dan potensi kedalaman yang berlebihan.
2. Penyelesaian yang Cekap
Untuk menangani kebimbangan kecekapan, kami boleh menggunakan strategi yang berbeza. Daripada bergantung pada rekursi dan gelung sehingga nama unik ditemui, kita boleh membuat salinan tatasusunan asal dan memilih item secara rawak daripada salinan sehingga semua item dipilih. Setelah semua item habis, kami menetapkan semula salinan kepada keadaan asalnya.
Berikut ialah pelaksanaan JavaScript bagi pendekatan ini:
<code class="javascript">function randomNoRepeats(array) { var copy = array.slice(0); return function() { if (copy.length < 1) { copy = array.slice(0); } var index = Math.floor(Math.random() * copy.length); var item = copy[index]; copy.splice(index, 1); return item; }; } var chooser = randomNoRepeats(['Foo', 'Bar', 'Gah']); console.log(chooser()); // => "Bar" console.log(chooser()); // => "Foo" console.log(chooser()); // => "Gah" console.log(chooser()); // => "Foo" -- only repeats once all items are exhausted.</code>
Pendekatan ini menggunakan kaedah array slice() JavaScript untuk buat salinan cetek tatasusunan asal. Ia kemudian berulang kali memilih item rawak daripada salinan dan mengeluarkannya daripada salinan, dengan berkesan meniru pemilihan rawak tanpa ulangan sehingga semua item habis. Setelah semua item dipilih, salinan ditetapkan semula, membenarkan pemilihan rawak bermula semula.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Item Tatasusunan Secara Rambang Tanpa Pengulangan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!