Javascript 尝试无序移动以从数组和拼接中生成随机数,但对数组中剩余的最后一个元素继续未定义

Javascript 尝试无序移动以从数组和拼接中生成随机数,但对数组中剩余的最后一个元素继续未定义,javascript,arrays,random,shuffle,Javascript,Arrays,Random,Shuffle,在这里,我可以生成不重复的随机数。下面是相同的代码 <body> <div id="bingo"> <script> let numbers = new Set() .add("B1") .add("B2") .add("B3")

在这里,我可以生成不重复的随机数。下面是相同的代码

    <body>
        <div id="bingo">
            <script>

                let numbers = new Set()
                        .add("B1")
                        .add("B2")
                        .add("B3")
                        .add("B4")
                        .add("B5")
                        .add("B6")
                        .add("B7")
                        .add("B8")
                        .add("B9")
                        .add("B10");

                let called = Array.from(numbers);

                let display = new Array();


                function getRandomNum()
                {
                    function rando()
                    {
                        for (let i = called.length - 1; i > 0; i++) 
                        {
                            const j = Math.floor(Math.random() * called.length);
                            const number = called[i];
                            called[i] = called[j];
                            called[j] = number;

                            if(number) 
                            {
                                called.splice(j, 1);
                            }

                            if(called.length < 0)
                            {
                                return;
                            } else
                                {
                                    return number;
                                }
                        }


                    }

                    if(called.length === 0)
                    {
                        index = "No More Numbers";
                    }else
                        {
                            index = rando();
                                display.push(index);
                        }
                    document.getElementById('bingo').innerHTML = index;

                }


                function show()
                {
                    for(let n = 0; n < display.length; n++)
                    {
                        document.getElementById('reveal').innerHTML += "<br/>" + display[n] + "<br/>";
                    }
                } 



            </script>
        </div>

        <div id="button">

            <button onclick="getRandomNum()">Random Number</button>

        </div>

        <br/>
        <br/>
        <br/>

        <div id="reveal">

            <button onclick="show()">Numbers Called</button>
        </div>

    </body>
</html>
我唯一的问题是,当它到达原始数组的最后一个元素时,它会生成未定义的值,而不是值


需要有关修复该零件的帮助,以便在随机生成并删除所有元素后,该零件不再显示数字。

您需要使用以下内容替换for循环:

for (let i = 0; i < called.length; i++){

或者,如果你想按自己的方式做,只需做:


对于let i=called.length-1;i=>0;i++

所以我尝试了这个循环,但是数组中的最后一个元素仍然没有定义,然后我得到了No More Numbers消息。我曾尝试使用called.length+1来查看是否有任何变化,但结果仍然相同。我猜这与洗牌有关,因为在数组末尾只有一个元素需要洗牌。这可能是影响它的原因吗?@p4yner56我似乎无法重现你提到的未定义的情况。请检查这里:这实际上是我的错误,我有一个打字错误,我一直丢失,除此之外,代码工作完美。再次感谢