Heim >Web-Frontend >js-Tutorial >Wie kann die zufällige Auswahl von Array-Elementen ohne Wiederholung optimiert werden?
So verbessern Sie die Effizienz der zufälligen Auswahl von Array-Elementen
Wenn es darum geht, Array-Elemente zufällig auszuwählen und gleichzeitig Wiederholungen zu vermeiden, spielt Effizienz eine entscheidende Rolle. Während der bereitgestellte Code effektiv verhindert, dass dasselbe Element mehrmals hintereinander ausgewählt wird, besteht Potenzial für Leistungsverbesserungen.
Was die Frage der Rekursion betrifft, gilt die bereitgestellte Funktion technisch gesehen nicht als rekursiv, da sie sich nicht selbst aufruft direkt, sondern ruft sich selbst über eine andere Funktion auf (chooseName()). Allerdings weist es in seiner iterativen Natur Ähnlichkeiten mit rekursiven Funktionen auf.
Um die Effizienz zu verbessern, kann ein alternativer Ansatz gewählt werden, der das rekursive Verhalten eliminiert und den Zeitaufwand für die Suche nach eindeutigen Elementen erheblich reduziert. Bei dieser Strategie wird eine neue Funktion erstellt, die Elemente nach dem Zufallsprinzip auswählt, bis alle Elemente im Array erschöpft sind. Sobald alle Elemente verwendet wurden, beginnt die Funktion von vorne und stellt sicher, dass keine Elemente wiederholt werden.
Der folgende Code implementiert diesen Ansatz:
<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>
Durch die Verwendung dieses modifizierten Ansatzes können Sie kann Wiederholungen effektiv vermeiden und gleichzeitig eine effiziente Elementauswahl aufrechterhalten, ohne dass die Möglichkeit langwieriger Schleifeniterationen besteht, wie bei der rekursiven Implementierung.
Das obige ist der detaillierte Inhalt vonWie kann die zufällige Auswahl von Array-Elementen ohne Wiederholung optimiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!