2016-04-25 14 views
0

今、私はすべてを見てきたことを知って、私が持っている特定の問題に対する答えを見つけることができませんでした。私はJSでとても新しく、自分自身を教えようとしていたので、おそらく非常に基本的な、「noob」の間違いを作っています。javascriptの文字列からランダムな配列の重複要素を避ける

あらかじめお詫び申し上げます。

私は、ランダムなジェネレータを作成しようとしています。基本的には、指定されたリストから2つの単語を引っ張っています。重複した結果が表示されないようにする方法はよくわかりません。

私は、次のコードで何か間違ったことをやっているとします

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

'unique'が見つかるまで、whileループはどうですか? – Rayon

+0

もう一つの選択肢は、配列をシャッフルしてから、最初の2つの項目を取ることです:http://stackoverflow.com/questions/2450954/how-to-randomize-shuffle-a-javascript-array –

答えて

0

あなたが異なる値

を得るまで

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

を交換しrandomIndex2をフェッチ維持する必要があります

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

あなたは重複を避けるために、あなたのコードにこのような何かを追加することができます。

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

randomIndexrandomIndex2のためのあなたの割り当て後。

文字列が1つしかない場合、randomStrings.length > 1は無限ループに陥ることがないようにします。