Javascript: Zufallszahl von 5, kein wiederholen, bis alle verwendet wurden
Ich bin mit dem folgenden code zuordnen, um eine zufällige Klasse (von fünf) , jedes einzelne Bild auf meiner Seite.
$(this).addClass('color-' + (Math.floor(Math.random() * 5) + 1));
Ist es großartig, aber ich will es so machen, dass es nie zwei gleiche Klasse in einer Reihe.
Sogar besser wäre, wenn es nie zwei gleiche in einer Reihe, und es hat auch nicht jede Klasse mehr als einmal, bis alle 5 hatten benutzt worden... Wie entfernen jeder Klasse aus der Reihe, bis alle von Ihnen verwendet wurden, dann wieder starten, nicht erlaubt, die Letzte der bisherigen 5 und die erste, die nächsten 5 der gleichen Farbe.
Hoffe das macht Sinn, und vielen Dank im Voraus für jede Hilfe.
Erstellen Sie eine Reihe von
1
zu 5
- und shuffle-array.InformationsquelleAutor user2860129 | 2013-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie ein array erstellen, der die möglichen Werte und jedes mal, wenn Sie rufen Sie einen beliebigen index aus dem array zu verwenden, einer der Werte, entfernen Sie es aus dem array.
Hier ist eine Allgemeine zufällige Funktion, die werden nicht das wiederholen, bis alle Werte verwendet wurden. Rufen Sie diese und fügen Sie einfach diesen index an das Ende der Klasse name.
Arbeiten demo: http://jsfiddle.net/jfriend00/H9bLH/
So, der code wäre dieser:
Hier ist eine Objekt-orientierte form, die es ermöglichen mehr als eine solche verwendet werden, die in verschiedenen Orten in Ihrem app:
Beispiel Für Die Nutzung:
Arbeiten demo: http://jsfiddle.net/jfriend00/q36Lk4hk/
Ich fügte hinzu, dass die Ende.
Eine Verbesserung ist das original-array und kopieren Sie Sie für das Spleißen. Wenn alle Mitglieder wurden aufgetrennt, eine weitere Kopie machen (falls erforderlich).
warum ist das kopieren einfacher, als einfach einen neuen zu erstellen, wenn Sie benötigt?
Da das original möglicherweise nicht nur eine Folge von Ziffern, oder etwas um wie 'colour1', 'colour2', etc.
InformationsquelleAutor jfriend00
Können Sie etwas tun, wie dies mit einem array und die splice Methode:
InformationsquelleAutor Johann Echavarria
InformationsquelleAutor Deepsy
Einfach zu erklären, mein Kommentar zu jfriend00 die ausgezeichnete Antwort, die Sie haben können, eine Funktion zurückgibt, die die Mitglieder einer Reihe, in zufälliger Reihenfolge, bis alle zurückgegeben worden sind, dann beginnt wieder, z.B.:
Wenn die Liste kann fest codiert werden, Sie können halten Sie das original in einem Verschluss, z.B.
InformationsquelleAutor RobG