Heim > Artikel > Web-Frontend > Wie kann ich zufällige Array-Elemente ohne Wiederholungen effizient auswählen?
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 Eindeutigkeit, 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.
Verbesserung der Effizienz
Um Endlosschleifen zu vermeiden, sollten Sie einen alternativen Ansatz in Betracht ziehen in der Antwort vorgeschlagen:
<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; }; }</code>
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, sodass eine eindeutige Auswahl gewährleistet ist, selbst wenn das Array erschöpft ist.
Das obige ist der detaillierte Inhalt vonWie kann ich zufällige Array-Elemente ohne Wiederholungen effizient auswählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!