好吧,所以我正在用这根头发拔头发。我正在尝试创建一个可以洗牌的虚拟功能。我在网上看到了示例,但是它们是用我不熟悉的某些语法编写的。我真的不明白发生了什么,所以我尝试自己写。无论如何,我要做的就是制作一个重复的阵列,然后从第一个阵列中随机挑选卡片并将它们逐个放入第二个阵列,然后删除随机选择的卡片。这是我的代码。一旦原始数组的长度达到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);


复印

08-08 06:04