由于未知原因,我的随机播放功能停止在 26。我怎样才能让它洗掉所有的牌?
My shuffle function is stopping at 26 for unknown reasons. How can I get it to shuffle all the cards?
好的,所以我正在用这个来拔头发。我正在尝试制作一个可以洗牌虚拟纸牌的功能。我在网上看到了示例,但它们是用我不熟悉的语法编写的。我真的不明白发生了什么,所以我试着写我自己的。无论如何,我的做法是制作一个重复的数组,然后从第一个数组中随机挑选卡片并将它们一张一张地放入第二个数组,然后删除随机选择的卡片。这是我的代码。一旦原始数组的长度达到 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);
求一份
好的,所以我正在用这个来拔头发。我正在尝试制作一个可以洗牌虚拟纸牌的功能。我在网上看到了示例,但它们是用我不熟悉的语法编写的。我真的不明白发生了什么,所以我试着写我自己的。无论如何,我的做法是制作一个重复的数组,然后从第一个数组中随机挑选卡片并将它们一张一张地放入第二个数组,然后删除随机选择的卡片。这是我的代码。一旦原始数组的长度达到 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);
求一份