javascript - 如何使 if/else 语句评估所有变量

标签 javascript jquery arrays if-statement

我正在尝试创建一个游戏,用户可以“押注”下一张牌是否位于前两张牌之间。为了计算该值,我创建了一个 52 之间的随机数,并将其设置为等于数组变量值。我需要一个数字 2-14 而不是 1-52(以评估该卡的 #,以防 2 张具有相同 # 和不同套件的卡显示)。为此,我使用 slice 获取数组项的第一个字母并将其存储在变量(num1、num2、numUser)中。

然后我使用 if else 语句给出花牌(10、jack、queen、king、ace)# 值。问题是,我需要将其应用于所有 3 个变量。目前,该语句在识别到人脸卡并设置 # 值时停止。如果有多张人头牌,则该语句仅适用于第一张。

我尝试将其包装在 for 循环中并使其运行 3 次 - 例如(for (var i = 0; i > 3; i++),但这不起作用。抱歉,如果这令人困惑,请提供帮助非常感谢。

function outputCards(){
    rand1 = Math.floor((Math.random() * 52));
    rand2 = Math.floor((Math.random() * 52));
    $('#cardUser').attr("src", "#");    
    if(rand1 == rand2){
        rand2 = Math.floor((Math.random() * 52));   
    } else {
        card1 = cards[rand1];
        card2 = cards[rand2];
        $('#cardOne').attr("src", "imgs/" + card1);
        $('#cardTwo').attr("src", "imgs/" + card2);
    }
}

function userCard(){
    rand_user = Math.floor((Math.random() * 52));
    if(rand_user == rand1 || rand_user == rand2){
        rand_user = Math.floor((Math.random() * 52));
    } else {
        user_card = cards[rand_user];
        $('#cardUser').attr("src", "imgs/" + user_card);
    }
}


function outcome(){
    userCard();
    num1 = card1.slice(0,1);
    num2 = card2.slice(0,1);
    numUser = user_card.slice(0,1);
    if(num1 == "j"){
        num1 = 11;
    } else if (num2 == "j") {
        num2 = 11;
    } else if (numUser === "j") {
        numUser = 11;
    } else if (num1 == "q") {
        num1 = 12;
    } else if (num2 == "q") {
        num2 = 12;
    } else if (numUser === "q") {
        numUser = 12;
    } else if (num1 == "k") {
        num1 = 13;
    } else if (num2 == "k") {
        num2 = 13;
    } else if (numUser === "k") {
        numUser = 13;
    } else if (num1 == "a") {
        num1 = 14;
    } else if (num2 == "a") {
        num2 = 14;
    } else if (numUser === "a") {
        numUser = 14;
    } else if(num1 == 1){
        num1 = 10;
    } else if(num2 == 1){
        num2 = 10;
    } else if(numUser == 1){
        numUser = 10;
    } else {


    }
}

最佳答案

还有更有效的方法来实现这一点,最直接(并且对初学者友好)的方法是使用 3 个 else if 树不是单个树。

if(num1 == "j"){
    num1 = 11;
} else if (num2 == "j") {
    num2 = 11;
} else if (numUser === "j") {
    numUser = 11;
...

当需要分开时,您可以将它们组合在一起

if(num1 == "j"){
    num1 = 11;
} else if (num1 == "q") {
    num1 = 12;
} else if (num1 === "k") {
    num1 = 13;
...


if(num2 == "j"){
    num2 = 11;
} else if (num2 == "q") {
    num1 = 12;
} else if (num2 === "k") {
    num2 = 13;
...

这可以通过将 if 语句放入函数中来完成

function outcome(number){
    if(number == "j"){
        return 11;
    } else if (number == "q") {
        return 12;
    } else if (number === "k") {
      ...
    } //etc
}

num1 = outcome(card1.slice(0,1))
num2 = outcome(card2.slice(0,1))
numUser = outcome(user_card.slice(0,1));

您还可以创建一个对象映射来将卡片字母与数字值映射

var cardMap = {
  j: 11,
  q: 12,
  k: 13,
  ...
}

那么你可以这样做

num1 = cardMap[card1.slice(0,1)]
num2 = cardMap[card2.slice(0,1)]
numUser = cardMap[user_card.slice(0,1)]

关于javascript - 如何使 if/else 语句评估所有变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34777051/

相关文章:

Python – ValueError : The truth value of an array with more than one element is ambiguous. 使用 a.any() 或 a.all()

python - 如何根据多个条件从 numpy 数组中删除行?

javascript - 淡入内容,然后制作动画 (flipInX)

javascript - 添加动态元素时刷新 JQuery 选择器

jquery - 如何使用 CSS 将背景颜色淡入淡出过渡到 Bootstrap 页面?

javascript - 作为 jQuery 选择器的字符串数组?

python - 如何使用 NumPy 创建一个 3 X 3 矩阵

javascript - 未捕获的类型错误 : Cannot read property 'className' of undefined dataTable

javascript - ASP ADO recordset.NextRecordset() 在没有下一个记录集时中断

javascript - jQuery 返回相同的不透明度