数组中的对象包含特定值

时间:2017-09-26 06:05:16

标签: javascript arrays

我正在尝试用Javascript构建一个二十一点游戏,并想确定玩家手中是否包含“Ace”。

我有一个玩家手牌的阵列和经销商手中包含所有牌,每个牌对象有3个与之关联的值...牌名称,套装和价值。你如何看待数组中每个对象的值“Ace”?

function card(name, suit, value) {
    this.name = name;
    this.suit = suit;
    this.value = value;
}

var playerHand = [];

var drawOne = function() {
   var card = cardsInDeck.pop();
   return card;
}

var p1 = drawOne();
    playerHand.push(p1.value);
var p2 = drawOne();
    playerHand.push(p2.value);

    if ((playerHand.indexOf("Ace") > 0) && playerTotal > 21) {
        playerTotal -= 10;
    }

任何有关如何正确处理此问题的见解都将受到赞赏。

1 个答案:

答案 0 :(得分:2)

  

我有一个玩家手中的阵列和经销商手中的所有内容   卡片,每个卡片对象都有3个与之关联的值。

假设playerHand是一个数组,您可以尝试

var hasAce = playerHand.some( function( card ){
  return card.suite.toLowerCase() == "ace";  
});

现在继续使用其余的逻辑

if ( hasAce && playerTotal > 21) {
    playerTotal -= 10;
}

修改

根据您分享的更新,由于您只是推送值而不是对象,indexOf将正常工作

if ((playerHand.indexOf("Ace") > 0) && playerTotal > 21) {
    playerTotal -= 10;
}