Javascript 我想生成随机数直到3,但我不';我不想重复。我怎样才能让它工作? 函数生成器(){ var random=Math.floor(Math.random()*3); var数组=[]; 对于(var i=0;i

Javascript 我想生成随机数直到3,但我不';我不想重复。我怎样才能让它工作? 函数生成器(){ var random=Math.floor(Math.random()*3); var数组=[]; 对于(var i=0;i,javascript,Javascript,我尝试将数字推送到数组中,然后用for循环检查它们,但没有成功。 我基本上想知道为什么这个代码不起作用。在这里使用for循环错误吗?好的,我知道了 function generator(){ var random = Math.floor(Math.random() * 3); var arrays = []; for (var i = 0; i < arrays.length; i++){ if (arrays.length = 0){

我尝试将数字推送到数组中,然后用for循环检查它们,但没有成功。 我基本上想知道为什么这个代码不起作用。在这里使用for循环错误吗?

好的,我知道了

function generator(){
    var random = Math.floor(Math.random() * 3);
    var arrays = [];
    for (var i = 0; i < arrays.length; i++){
        if (arrays.length = 0){
            console.log(random);
            arrays.push(random);
        } else if (random = arrays[i]){
            generator();
        } else {
            console.log(random);
            arrays.push(random);
        }
    }
}
另一个解决方案

    var arrays = [];
function generator(){
    var random = Math.floor(Math.random() * 3);
    if (arrays.length == 3){
        stop();
    } else if (arrays.indexOf(random) == -1){
        console.log(random);
        arrays.push(random);
    } else{
        generator();
    }
}
let num,ready=新对象;
让开始=0,结束=3;
对于(设i=0;i<3;)
{
num=(Math.random()*(end-start)+start)^0;
如果(!(已输入数值))
{
已经[num]=num;
i++;
document.write(字符串(num));
如果(i<3)
文件。写(“,”);
}
}

您正在if语句中使用
=
。请注意,单个
=
表示分配。使用
=
==
进行比较在for循环之前和循环中有
i
,这有意义吗?可以使用
indexOf
代替循环。还要注意,如果这三个数字都是列表的一部分,那么循环/递归不会结束。此外,在每个子循环中不断增加对
generator()
的调用,因为没有
break
。不要对这个简单的任务使用递归。另外,用于测试新生成的随机数是否已在数组中。我希望推送新的随机数,以便每次调用该函数时,它都会生成新的随机数。
let num, already = new Object;

    let start = 0, end = 3;

    for (let i = 0; i < 3;)
    {
        num = (Math.random() * (end - start) + start) ^ 0;
        if (!(num in already))
        {
            already[num] = num;
            i++;
            document.write(String(num));
            if (i < 3)
                document.write(', ');
        }
    }