我正在尝试构建一副牌并删除其中一张,将它们各自的名称、花色和值属性作为单独的元素返回。我创建了一个卡片对象,每个卡片对象都有一个“名称”、“花色”和“值”,并将其中 52 张放入“Deck”数组中。我想从牌组数组中抽取一张“卡牌”,并将其各自的属性用于卡牌游戏,但我不确定如何正确执行此操作。下面是我试图实现这一目标的示例。
//CARD OBJECT
function card(name, suit, value) {
this.name = name;
this.suit = suit;
this.value = value;
}
//NEW DECK ARRAY
var cardsInDeck = new Array();
//INDIVIDUAL CARD OBJECTS IN THE DECK ARRAY
var aceSpades = new card("Ace", "Spades", 1);
cardsInDeck.push(aceSpades);
var twoSpades = new card("Two", "Spades", 2);
cardsInDeck.push(twoSpades);
var threeSpades = new card("Three", "Spades", 3);
cardsInDeck.push(threeSpades);
var fourSpades = new card("Four", "Spades", 4);
cardsInDeck.push(fourSpades);
var fiveSpades = new card("Five", "Spades", 5);
//REPEATED FOR ALL 52 CARDS
//SHUFFLE CARDS
var shuffle = function() {
var theLength = cardsInDeck.length - 1;
var toSwap;
var tempCard;
for (var i = theLength; i > 0; i--) {
toSwap = Math.floor(Math.random() * i);
tempCard = cardsInDeck[i];
cardsInDeck[i] = cardsInDeck[toSwap];
cardsInDeck[toSwap] = tempCard;
}
}
shuffle();
//DRAW ONE CARD
var drawOne = function() {
var card = cardsInDeck.slice(cardsInDeck.length - 1);
cardsInDeck.length--;
return card;
}
console.log(drawOne());
我可以绘制一张“卡”,但它返回一个数组(1),其中包含每张卡的名称、花色和值......但我不确定如何分离这些属性并使用他们来构建游戏。我确信这很简单,而且我忽略了一些小事情,但我对编程很陌生,还没有找到专门适用于这个问题的解决方案。
如有任何帮助,我们将不胜感激。
最佳答案
使用var card = cardsInDeck.pop();
来绘制卡片。而且你不能使用cardsInDeck.length--;
,相反,pop将删除最后一张卡片,因此长度将自动递减,并且为了更少更好的代码,只需使用return而不创建变量,所以你的函数应该是:
var drawOne = function() {
return cardsInDeck.pop();
}
而且,不用手动创建所有卡片,而是使用它来获得更少更好的代码:
var cardsInDeck = [];
var suits = ["Spades","Hearts","Clubs","Diamonds"];
var names = ["One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"];
var values = [1,2,3,4,5,6,7,8,9,10,11,12,13];
var card;
for (var i=0; i<suits.length; i++) {
for (var j=0; j<names.length; j++) {
cardsInDeck.push(new card(names[j], suits[i], values[j]));
}
}
要获取抽到的牌的值、名称或花色,请使用:
var card = drawOne();
var cardValue = card.value;
var cardName = card.name;
var cardSuit = card.suit;
关于javascript - 返回数组的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46018619/