2016-04-25 12 views
0

Nun, lassen Sie es wissen, ich habe überall gesucht und ich konnte keine Antwort auf das spezifische Problem, das ich habe. Ich bin sehr neu mit JS und ich habe versucht, mich selbst zu unterrichten, also mache ich wahrscheinlich einen sehr grundlegenden, "noob" Fehler.Vermeiden Sie doppelte Elemente in einem zufälligen Array aus einer Zeichenfolge in Javascript

So Entschuldigung im Voraus.

Ich versuche, einen "Zufallsgenerator" von Arten zu machen, grundsätzlich zwei Wörter von einer gegebenen Liste ziehend, und ich bin nicht ziemlich sicher, wie doppelte Ergebnisse vom Erscheinen vermieden werden.

Ich glaube, ich bin etwas falsch in den folgenden Code ausführen:

var randomDiv = document.getElementById("myRandomDiv"); 

document.getElementById("myButton").addEventListener("click", function() { 
     randomIndex = Math.ceil((Math.random()*randomStrings.length-1)); 
     randomIndex2 = Math.ceil((Math.random()*randomStrings.length-1)); 
     newText = randomStrings[randomIndex]+" + "; 
     newText2 = randomStrings[randomIndex2]; 
     randomDiv.innerHTML = newText+newText2; 
+1

Wie wäre es mit einer 'while' Schleife bis 'unique'? – Rayon

+0

Eine weitere Option ist das Array zu mischen, dann nehmen Sie einfach die ersten 2 Elemente: http://StackOverflow.com/Questions/2450954/How-To-Randomize-shuffle-a-javascript-array –

Antwort

0

Sie halten müssen holen randomIndex2, bis Sie einen anderen Wert

randomIndex2 = Math.ceil((Math.random()*randomStrings.length-1)); 

mit

ersetzen erhalten
randomIndex2 = Math.ceil((Math.random()*randomStrings.length-1)); 
while(randomIndex == randomIndex2) 
{ 
    randomIndex2 = Math.ceil((Math.random()*randomStrings.length-1)); 
} 
0

Sie können so etwas zu Ihrem Code hinzufügen, um Doppelarbeit zu vermeiden:

while(randomIndex === randomIndex2 && randomStrings.length > 1) { 
    randomIndex2 = Math.ceil((Math.random()*randomStrings.length-1)); 
} 

direkt nach Belegung für randomIndex und randomIndex2.

Wenn Sie nur eine Zeichenfolge haben, stellt randomStrings.length > 1 sicher, dass Sie nicht in einer Endlosschleife stecken bleiben.

Verwandte Themen