So wählen Sie Array-Elemente effizient und zufällig ohne Wiederholungen aus
Ihr Code erstellt ein Array aktueller Auswahlmöglichkeiten, um Wiederholungen zu verhindern, und ruft eine rekursive Funktion auf mit dem Namen „chooseName()“, wenn ein ausgewähltes Element in den letzten Auswahlmöglichkeiten enthalten ist. Dieser Ansatz gewährleistet Einzigartigkeit, kann jedoch zu einer Endlosschleife führen, wenn die Array-Größe begrenzt ist.
Ist es eine rekursive Funktion?
Ja, ChooseName() ruft sich selbst auf Finden Sie eine einzigartige Auswahl. Durch Rekursion kann die Funktion Array-Elemente durchlaufen, bis sie eines findet, das nicht in den letzten Auswahlmöglichkeiten enthalten ist.
Effizienz verbessern
Um Endlosschleifen zu vermeiden, sollten Sie einen alternativen Ansatz in Betracht ziehen vorgeschlagen in der Antwort:
function randomNoRepeats(array) {
var copy = array.slice(0);
return function() {
if (copy.length Diese Funktion generiert eine Kopie des ursprünglichen Arrays und wählt zufällig ein Element daraus aus. Sobald alle Elemente verwendet sind, wird eine neue Kopie des ursprünglichen Arrays erstellt, wodurch eine eindeutige Auswahl gewährleistet wird, selbst wenn das Array erschöpft ist.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3