取一个数组并将其随机化为另一个数组

时间:2014-03-13 00:11:27

标签: javascript arrays

我有两个阵列(代表一副牌),一个填充值1-52,另一个填充没有。我想从第一个数组中随机取出位置并取出该对象并将其放入随机数组中的下一个可用位置。到目前为止我有这个:

var shufdeck = new Array();
while(sufdeck.length < 52)
{
    i = Math.floor(Math.random()*52);
    //shufdeck[0] = deck[i] etc.
}

我不确定我是否应该使用splice或其他东西将它从第一个数组中取出并放入第二个数组中。如果可能的话,应该填充shufdeck []并且deck []将为空。

How can I shuffle an array?

1 个答案:

答案 0 :(得分:2)

是的,你应该拼出所选卡片,所以:

var shuffledDeck = [];

while (deck.length) {
  shuffledDeck.push(deck.splice(Math.random()*deck.length | 0, 1)[0]);
}

或者提高效率:

var i = deck.length;
while (i) {
  shuffledDeck.push(deck.splice(Math.random()*i-- | 0, 1)[0]);
}

请注意,这会破坏 deck 。如果您不想要,请先复制它:

var deckToShuffle = deck.slice();