2016-09-18 95 views
-2

我被困在某物上。我希望用户能够从数组中选择一个值。但挑战是他/她无法获得与之前相同的价值。每次获得不同的随机值

https://jsbin.com/hibihubega/edit?html,js,console,output

我不知道如何着手,帮助。

function getNum(){ 
    var num = ['1', '2', '3', '4', '5']; 

var selected = num[Math.floor(Math.random() * num.length)]; 
var history = selected; 

    if(history){ 

    } 

} 

$('button').click(function(){ 
    console.log(getNum()); 
}) 
+0

选择后从数组中删除的元素。 – Tempux

回答

0

选择后取出值,下一个选择之前更换。

这里是你如何可以格式化你的代码:

var num, 
    lastNum, 
    numbers = [1,2,3,4,5]; 

function newNum(){ 
    lastNum && numbers.push(lastNum); 
    lastNum = num; 
    var r = Math.floor(Math.random() * numbers.length); 
    num = numbers[r]; 
    numbers.splice(r,1); 
} 

$("button").click(function(){ 
    newNum(); 
    console.log(num); 
}) 

拾取的数目是随机的,但从来没有最后的选择之一。

+0

为了工作。 'num'数组必须在'getNum()'函数之外定义。 – Titus

0

只需在使用后删除splice()的值。

function getNum() { 
    if (num.length==0){ 
     return false; 
    } else { 
     var index = Math.floor(Math.random() * num.length) 
     var selected = num[index]; 
     num.splice(index, 1); //remove from array 
     return selected; 
    } 
} 

如果你想保存初始数据,创建另一个(克隆)初始数组并减少它。

+0

如果在点击这么多后数组项是空的,它会导致错误吗? –

+0

它为什么会导致错误?它始终从数组大小获取索引。如果它是空的,你可以......好吧。我加了'if'表达式 –

+0

我把'if'表达式加到全功能上。如果数组为空,则返回'false'。如果数组不为空,则返回数字 –

1

尝试这种情况:

$(document).ready(function() { 

    num = ['1', '2', '3', '4', '5']; 
    temp =[]; 

    $("button").on("click",function(){ 

     getNum(); 

    }) 

    function getNum(){ 

     if (num.length <= 0 ) { 
      num = temp; 
      temp =[]; 
     } 

     var indexRandom = Math.floor(Math.random()*(num.length)); 
     console.log(num[indexRandom]); 
     temp.push(num[indexRandom]); 
     num.splice(indexRandom,1); 
    } 

}) 

最终代码:

<!DOCTYPE html> 
 
<html> 
 
    <head> 
 
     <style> 
 
     </style> 
 
    </head> 
 
    <body> 
 
<button>dfdgdfg</button> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 
     <script> 
 
      
 
$(document).ready(function() { 
 
    
 
    num = ['1', '2', '3', '4', '5']; 
 
    temp =[]; 
 
    
 
    $("button").on("click",function(){ 
 
     
 
     getNum(); 
 
     
 
    }) 
 
    
 
    function getNum(){ 
 
     
 
     if (num.length <= 0 ) { 
 
      
 
      num = temp; 
 
      temp =[]; 
 
      
 
     } 
 
      
 
      var indexRandom = Math.floor(Math.random()*(num.length)); 
 
      console.log(num[indexRandom]); 
 
      temp.push(num[indexRandom]); 
 
      num.splice(indexRandom,1); 
 
    } 
 
      
 
}) 
 
     
 
      
 
     </script> 
 
    </body> 
 
</html> 
 
    

+0

这是工作,但如何重置阵列回来,我不能有一个警报说数组是空的哈哈。 –

+0

@SoniaA。我修复it.see更新后。 – Ehsan

相关问题