所以我创建一个卡片对象并将卡片对象放入其中并将其洗牌,现在我试图以某种方式将卡片中的第一个卡片对象拼接成player.hand或dealer.hand,我该怎么做呢?
(这不起作用)
player.hand = deck.splice(0);
TypeError:deck.splice不是函数
对于noob问题抱歉
var cardname = ["Ace", "two", "three", "four", "five", "six", "sevem", "eight", "nine", "ten", "jack", "queen", "king"]
var suit = ["spades", "hearts", "clubs", "diamonds"]
var value = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
var deck = {};
var player = {
hand: null
}
var dealer = {
hand: null
}
function card(cardname, suit, value) {
this.cardname = cardname;
this.suit = suit;
this.value = value;
}
function createdeck(){
cardindeck = 0;
for(i=0; i<cardname.length; i++){
for(k=0; k<suit.length; k++){
deck[cardindeck] = new card(cardname[i], suit[k], value[i]);
cardindeck++;
}
}
}
function shuffledeck(deck) {
var i = 0;
var j = 0;
var temp = null;
for (i=Object.keys(deck).length-1; i>0; i--) {
j = Math.floor(Math.random() * (Object.keys(deck).length));
temp = deck[i];
deck[i] = deck[j];
deck[j] = temp;
}
}
function dealplayer(deck, player) {
player.hand = deck.splice(0);
}
function dealdealer(deck, dealer) {
player.hand = deck.splice(0);
}
}
答案 0 :(得分:2)
您可以使用数组而不是对象。
var deck = [];
// ^^
然后,您可以使用带有两个参数的原生Array#splice
来设置一个项目。
selectedCard = deck.splice(0, 1)[0];
// ^ ^^^
// count / \\\ get the first element of the spliced array
在createdeck
中,您可以省略索引计数器并使用Array#push
function createdeck() {
var i, k;
for (i = 0; i < cardname.length; i++) {
for (k = 0; k < suit.length; k++) {
deck.push(new card(cardname[i], suit[k], value[i]));
}
}
}
在shuffledeck
替换
Object.keys(deck).length
使用数组的长度属性
deck.length
完整代码并进行一些细微更改:
function Card(cardname, suit, value) {
this.cardname = cardname;
this.suit = suit;
this.value = value;
}
function createDeck(deck) {
var i, k;
deck.length = 0;
for (i = 0; i < cardname.length; i++) {
for (k = 0; k < suit.length; k++) {
deck.push(new Card(cardname[i], suit[k], value[i]));
}
}
}
function shuffleDeck(deck) {
var i = deck.length,
j,
temp,
length = deck.length;
while (i--) {
j = Math.floor(Math.random() * length);
temp = deck[i];
deck[i] = deck[j];
deck[j] = temp;
}
}
function dealPlayer(deck, player) {
player.hand.push(deck.splice(0, 1)[0]);
}
function dealDealer(deck, dealer) {
dealer.hand.push(deck.splice(0, 1)[0]);
}
var cardname = ["Ace", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "jack", "queen", "king"],
suit = ["spades", "hearts", "clubs", "diamonds"],
value = [11, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10],
deck = [],
player = { hand: [] },
dealer = { hand: [] };
createDeck(deck);
console.log('deck', deck);
shuffleDeck(deck);
console.log('deck', deck);
dealPlayer(deck, player)
console.log('player', player);
dealDealer(deck, dealer);
console.log('dealer', dealer);
.as-console-wrapper { max-height: 100% !important; top: 0; }