Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Memilih Item Tatasusunan Secara Rambang Tanpa Pengulangan?

Bagaimana untuk Memilih Item Tatasusunan Secara Rambang Tanpa Pengulangan?

Susan Sarandon
Lepaskan: 2024-10-31 03:54:01
asal
783 orang telah melayarinya

How to Efficiently Select Array Items Randomly Without Repetition?

Memilih Item Tatasusunan Dengan Cekap Secara Rawak 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>
Salin selepas log masuk

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!

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