我正在尝试用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;
}
任何有关如何正确处理此问题的见解都将受到赞赏。
答案 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;
}