javascript - 返回数组的属性

标签 javascript arrays

我正在尝试构建一副牌并删除其中一张,将它们各自的名称、花色和值属性作为单独的元素返回。我创建了一个卡片对象,每个卡片对象都有一个“名称”、“花色”和“值”,并将其中 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/

相关文章:

php - 如何将动态 php 页面放入 jquery Accordian "active"部分

arrays - 根据一列中数组的元素选择数据框的行

python - numpy 数组中随机选择的索引

python - 理解 IPython 中的 numpy.linalg.norm()

javascript - Backbone.js PushState 真

javascript - 我应该在前端哪里为我的 Gatsby 网站加载Stripe?我对 Netlify 的插入在我目前的实现中崩溃了

c - For 循环卡住 (.C)

java - 在java中提升数字的字符串输入

javascript - 从另一个页面 TAG 检索值

javascript - 将 JSON 对象转换为不同的对象