我不明白为什么第二次调用 getCard 函数会返回牌组的第二张。由于deck.shift()
,它不是总是返回牌组的第一项吗?为什么函数会像for循环一样再次执行?
而且,当我最后注销套牌时,它会返回没有前两项的套牌?
//
//Blackjack
// by Weilin
let suits=['Hearts', 'Clubs', 'Diamonds', 'Spades'];
let values=['Ace', 'King','Queen', 'Jack', 'Ten', 'Nine',
'Eight', 'Seven', 'Six','Five','Four', 'Three','Two'];
function createDeck(){
let deck=[];
for (let suitIdx=0; suitIdx<suits.length;suitIdx++){
for (let valueIdx=0;valueIdx<values.length; valueIdx++){
deck.push(values[valueIdx]+ ' of ' + suits[suitIdx]);
}
}
return deck;
}
function getNextCard(){
return deck.shift();
}
let deck= createDeck();
for(let i=0; i<deck.length;i++){
console.log(deck[i]);
}
let playerCards=[getNextCard(),getNextCard()];
console.log("Welcome to Blackjack!")
console.log("You are dealt:" )
console.log(" "+playerCards[0])
console.log(" "+playerCards[1])
最佳答案
deck.shift()
从数组中删除第一个元素并返回它( more info here ) - 所以如果运行两次,结果将会不同(因为第一次调用更改数组)。所以调用getNextCard()
后两次,两个第一个元素被从 desk
中删除。如果您不想从 desk
中删除前两个元素但只阅读它们然后使用
let first = deck[0];
let second = deck[1];
或者在索引 i 处获取卡片
let card = deck[i];
关于javascript - 为什么第二次调用 getCard 函数会返回牌组的第二张?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57667403/