javascript - 由于未知原因,我的随机播放功能在 26 处停止。我怎样才能让它洗所有的牌呢?

标签 javascript arrays random shuffle

好吧,所以我要用这个来拔掉我的头发。我正在尝试创建一个可以洗虚拟牌组的函数。我在网上看到了一些例子,但它们是用一些我不熟悉的语法编写的。我真的不明白发生了什么,所以我尝试自己写。不管怎样,我的做法是,我制作一个重复的数组,然后从第一个数组中随机挑选卡片并将它们一张一张地放入第二个数组中,然后删除随机选择的卡片。这是我的代码。一旦原始数组的长度达到 26,该函数就会停止。

shuffleDeck: function (deck) {
        var newDeck = deck;
        for (i = 0; i<newDeck.length;i++){
            randomIndex = Math.floor(Math.random() * deck.length);
            newDeck[i] = deck[randomIndex];
            deck.splice(randomIndex,1);  
            console.log(deck.length);
        }

        return newDeck;
    }

最佳答案

数组在 JavaScript 中通过引用传递,因此拼接将从数组中删除,这就是它停止的原因

查看 http://orizens.com/wp/topics/javascript-arrays-passing-by-reference-or-by-value/

你可以做到

var newDeck = deck.slice(0);

索取副本

关于javascript - 由于未知原因,我的随机播放功能在 26 处停止。我怎样才能让它洗所有的牌呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31362667/

相关文章:

javascript - ReactJS - 将参数传递给函数

php - fatal error : Cannot use string offset as an array?

javascript - 查找具有较高项但低于限制的对象的 id

java - 将背景图像更改为随机

random - 在 Befunge 中生成随机数

python - 如何将字符串散列为 [0 :1]? 中的 float

javascript - 动态创建的表中的粗体文本 - javascript

javascript - 如何将子 Node 从一个 Node 复制到另一个 Node ?

javascript - 通过 javascript 有条件地隐藏 div 部分

python - 具有高级混合索引的 Numpy 子数组分配