2017-01-25 46 views
0

如果我的卡就像一個數組:甲板的卡(陣列),得到一個處理手的價值

var deck = ["AH", "AS", "AD", "AC", "2H", "2S", "2D", "2C", "3H", "3S", "3D", "3C", "4H", "4S", "4D", "4C", "5H", "5S", "5D", "5C", "6H", "6S", "6D", "6C", "7H", "7S", "7D", "7C", "8H", "8S", "8D", "8C", "9H", "9S", "9D", "9C", "10H", "10S", "10D", "10C", "JH", "JS", "JD", "JC", "QH", "QS", "QD", "QC", "KH", "KS", "KD", "KC"]; 

和處理2的用戶的:

var userHand = deck.splice([Math.floor(Math.random()*deck.length)+1], 1); 
userHand.push(deck.splice([Math.floor(Math.random()*deck.length)+1], 1).join("")) 

我得到像這樣的東西:

["5S", "2H"]; 

而這些2張牌是在甲板之外。

到目前爲止這麼好,但現在我想要計算用戶擁有的積分,在這種情況下,它將是7.我需要一種方法來爲數字卡片和Ace分配數值。 我創建了一個功能,但它是錯誤的地方,我不斷收到2:

function countPoints(){ 

    for (let i = 0; i < userHand.length; i++){ 

    if (userHand[i] == "AH" || "AS" || "AD" || "AC") { 
    userPoints += 1; 
    } else if (userHand[i] == "2H" || "2S" || "2D" || "2C") { 
    userPoints += 2; 
    } else if (userHand[i] == "3H" || "3S" || "3D" || "3C") { 
    userPoints += 3; 
    } else if (userHand[i] == "4H" || "4S" || "4D" || "4C") { 
    userPoints += 4; 
    } else if (userHand[i] == "5H" || "5S" || "5D" || "5C") { 
    userPoints += 5; 
    } else if (userHand[i] == "6H" || "6S" || "6D" || "6C") { 
    userPoints += 6; 
    } else if (userHand[i] == "7H" || "7S" || "7D" || "7C") { 
    userPoints += 7; 
    } else if (userHand[i] == "8H" || "8S" || "8D" || "8C") { 
    userPoints += 8; 
    } else if (userHand[i] == "9H" || "9S" || "9D" || "9C") { 
    userPoints += 9; 
    } else if (userHand[i] == "10H" || "10S" || "10D" || "10C") { 
    userPoints += 10; 
    } else if (userHand[i] == "JH" || "JS" || "JD" || "JC") { 
    userPoints += 10; 
    } else if (userHand[i] == "QH" || "QS" || "QD" || "QC") { 
    userPoints += 10; 
    } else if (userHand[i] == "KH" || "KS" || "KD" || "KC") { 
    userPoints += 10; 
    } 
    } 
    } 
+1

如何而不是有一個列表字符串作爲甲板 - 有一個對象列表,每個對象將有兩個屬性:名稱和點 – classicalConditioning

+0

正如其他用戶指出的,問題是OR條件的語法。但是,如果您確定所有字符串都是格式良好的,您可以擺脫那麼大的代碼塊,並用'userPoints + = parseInt(userHand [i])||代替它。 userHand [i] [0] =='A'&& 1 || 10;' – Gio

回答

2

userHand[i] == "AH" || "AS" || "AD" || "AC"導致truthy值。您需要檢查每個卡套裝的平等性,而不僅僅是將它們放在一起。

userHand[i] == "AH" || userHand[i] == "AS" || 
userHand[i] == "AD" || userHand[i] == "AC" 

這裏有很大的改進空間來保持乾燥,但這解決了根本問題。隨意問codereview.stackexchange.com

+0

這確實有效,你是對的,它可能更漂亮。謝謝。接受,當它允許我。 – Sergi