gpt4 book ai didi

javascript - 以不同的顺序混洗两个不同的数组

转载 作者:行者123 更新时间:2023-11-28 19:15:20 24 4
gpt4 key购买 nike

我有两副牌:

var cardDeck = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A"];
var player1Deck = shuffle(cardDeck);
var player2Deck = shuffle(cardDeck);

打乱顺序:

function shuffle(o){
for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
};

但是,它们都以相同的顺序洗牌:

player1Deck = [1, 2, "A", 5, 4, 8, "J", 9, 6, 10, "Q", 7, 3, "K"];
player2Deck = [1, 2, "A", 5, 4, 8, "J", 9, 6, 10, "Q", 7, 3, "K"];

相反,我希望牌组以不同的方式洗牌,如下所示:

player1Deck = [1, 2, "A", 5, 4, 8, "J", 9, 6, 10, "Q", 7, 3, "K"];
player2Deck = ["A", 3, 1, 8, 4, 5, "K", 7, "Q", 10, 6, 9, 2, "J"];

如果可能的话,我想仅将其保留在 Javascript 中。

最佳答案

问题是您的洗牌方法进行了内联洗牌,因此返回了相同的实例。

因此,将原始数组的副本传递给 shuffle 方法,为此您可以使用 slice(0) 方法

var cardDeck = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, "J", "Q", "K", "A"];
var player1Deck = shuffle(cardDeck.slice(0));
var player2Deck = shuffle(cardDeck.slice(0));

关于javascript - 以不同的顺序混洗两个不同的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29980667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com