2017-05-25 9 views
0

私は非反復乱数ピッカーを作成しようとしていますが、誰かが間違っていたことを指摘できますか?おかげ非反復乱数ピッカー

var resultArray = []; 

function pickRandom(){ 
    var min = parseInt(document.getElementById("min").value); 
    var max = parseInt(document.getElementById("max").value); 
    var result = Math.floor((Math.random() * max) + min); 

    resultArray.push(result); 

    for (var i = 0; i < resultArray.length; i++){ 
    if(resultArray[i].includes(result)) 
    { 
     pickRandom(); 
    } else { 
     document.getElementById("result").value = result; 
    } 
    } 
} 

答えて

3

に変更し、それを:あなたのコードと2つの問題がありました

var resultArray = []; 
function pickRandom(){ 
    var min = parseInt(document.getElementById("min").value); 
    var max = parseInt(document.getElementById("max").value); 
    var result = Math.floor((Math.random() * max) + min); 
    if(resultArray.includes(result)) 
    { 
    pickRandom(); 
    } else { 
    resultArray.push(result); 
    document.getElementById("result").value = result; 
    } 
} 


1.あなたは、最初の配列に新しい要素をプッシュし、それが配列であるかどうかをチェックします常に真実を返します。これにより、無限ループが発生します。
2.メソッドは、要素が配列内にあるか文字が文字列内にあるかをチェックするために定義されています。あなたのコードでは、arrayの各要素を繰り返し処理した後、includeメソッドを使用しています。

+0

おかげで、それはまだ –

+0

http://codepen.io/quanahquan/pen/LyaORY –

+0

チェックが再び、それは仕事をして動作しません。私はその間にいくつかの変更を加えました。古いコードをチェックしたかもしれません。 – Sajin

1

resultArrayの長さが可能な数値の数と等しい場合にチェックを使用してループを終了することができます。

function pickRandom() { 
 
    var min = +parseInt(document.getElementById("min").value), 
 
     max = +parseInt(document.getElementById("max").value), 
 
     result = Math.floor((Math.random() * (max - min + 1)) + min); 
 

 
    if (resultArray.length === max - min + 1) { 
 
     document.getElementById("result").value = 'no more available'; 
 
     return; 
 
    } 
 
    if (resultArray.includes(result)) { 
 
     pickRandom(); 
 
    } else { 
 
     resultArray.push(result); 
 
     document.getElementById("result").value = result; 
 
    } 
 
} 
 

 
var resultArray = [];
<input type="text" id="min" placeholder="min"> <input type="text" id="max" placeholder="max"> <button onclick="pickRandom()">Generate Random Number</button> <input type="text" id="result" placeholder="random number">