如果语句为false则再次随机化数字JavaScript

时间:2016-03-19 18:43:02

标签: javascript random

function computerLogic(array) {

    function random() {
        var rand = Math.floor(Math.random() * 9);
        if ((array[rand] === playerChoice) || (array[rand] === computerChoice)) {
            random(); < ----------------------- THATS MY PROBLEM,
        } else if (array[rand] === 0) {
            array[rand] = computerChoice;
            grid.item(rand).innerHTML = computerChoice;
        } else {
            alert("END OF THE GAME!");
            console.log(array[rand]);
        }
    }
    random();

}

所以我的Tic Tac Toe代码的一部分将O或X放到网格中。 在函数处理用户点击时调用此函数。每次用户点击某些内容,然后调用此函数并将更新的数组发送给它。

如果它在if语句的范围内,我递归地调用函数random()再次随机编号。

我不想以递归方式调用它,但我不知道如何让var rand再次随机而不是再次调用整个random()函数。

忽略最后的其他陈述。

在这里你可以查看所有代码,如果它混乱。 https://github.com/uRTLy/Tic-Tac-Toe

修改

function computerLogic(array) {

 function random() {

var rand = Math.floor(Math.random() * 9);



var result = (array[rand] === computerChoice) || (array[rand] === playerChoice) ?
  random(): (function(rand) {
    array[rand] = computerChoice;
    grid.item(rand).innerHTML = computerChoice;
  })(rand);
}

random();


 }

这样做也是如此,但仍然超过了堆栈大小,仍然和之前一样。

1 个答案:

答案 0 :(得分:0)

使用while语句

while((array[rand] === playerChoice)||(array[rand] === computerChoice)) {    
    rand = Math.floor(Math.random() * 9);
}