Rumah > Artikel > hujung hadapan web > Bagaimana untuk Mengoptimumkan Pemilihan Item Tatasusunan Tanpa Pengulangan?
Cara Meningkatkan Kecekapan Pemilihan Item Tatasusunan
Apabila memilih item tatasusunan secara rawak sambil mengelakkan pengulangan, kecekapan memainkan peranan yang penting. Walaupun kod yang disediakan secara berkesan menghalang pemilihan item yang sama beberapa kali berturut-turut, terdapat potensi untuk peningkatan prestasi.
Mengenai persoalan rekursi, fungsi yang disediakan secara teknikal tidak layak sebagai rekursif kerana ia tidak memanggil dirinya sendiri secara langsung tetapi sebaliknya memanggil dirinya sendiri melalui fungsi lain (chooseName()). Walau bagaimanapun, ia berkongsi persamaan dengan fungsi rekursif dalam sifat berulangnya.
Untuk meningkatkan kecekapan, pendekatan alternatif boleh diguna pakai yang menghapuskan gelagat seperti rekursif dan dengan ketara mengurangkan masa yang dihabiskan untuk mencari item unik. Strategi ini melibatkan mencipta fungsi baharu yang memilih item secara rawak sehingga semua item dalam tatasusunan telah habis. Setelah semua item telah digunakan, fungsi akan bermula semula dari awal, memastikan tiada item diulang.
Kod berikut melaksanakan 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']); chooser(); // => "Bar" chooser(); // => "Foo" chooser(); // => "Gah" chooser(); // => "Foo" -- only repeats once all items are exhausted.</code>
Dengan menggunakan pendekatan yang diubah suai ini, anda berkesan boleh mengelakkan pengulangan sambil mengekalkan pemilihan item yang cekap tanpa potensi untuk lelaran gelung yang panjang seperti dalam pelaksanaan seperti rekursif.
Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Pemilihan Item Tatasusunan Tanpa Pengulangan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!