检查变量是否相等的语法

时间:2019-06-28 21:13:03

标签: javascript if-statement logical-operators

想知道是否存在优化比较语法的选项(使其更胜一筹)

我有一个简单的代码,该代码通过“ if-else”条件语句检查对函数的输入。我使用逻辑“或”运算符来验证变量是否等于输入之一。

X  [54, 67]
a  [54]
b  [67]
Y  [25,16,34,24]
c  [25,16]
d  [34,24]

我想知道是否可以用另一种语法替换此数量的“ OR”运算符? 我知道“切换”方法,但是现在我对这种方法特别感兴趣。

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以使用Array.prototype.includes

if ([2, 3, 4, 5, 6].includes(card)) {
  count += 1;
} else if ([7, 8, 9].includes(card)) {
  count += 0;
} else if ([10, "J", "Q", "K", "A"].includes(card)) {
  count -= 1;
}

答案 1 :(得分:2)

您可以使用将卡值映射到要添加到count的金额的对象:

const cards = {
    2: 1, 3: 1, 4: 1, 5: 1, 6: 1,
    7: 0, 8: 0, 9: 0,
    10: -1, J: -1, Q: -1, K: -1, A: -1
};
function cc(card) {
    if (card in cards) {
        count += cards[card];
        if (count > 0) {
            return count + " Bet";
        } else {
            return count + " Hold";
        }
    } else {
        return "No such combination"
    }
}

答案 2 :(得分:1)

if (card==2 || card==3 || card==4 || card==5 || card==6) {
count+=1;

可以更改为

if (card >= 2 && card <= 6) {
count+=1;

编辑: 如果只需要整数,则可能要添加card / 2 == 0

答案 3 :(得分:0)

您可以像这样编写它,以使其更具可读性

function cc(cards) {
    let all = [
        { cards : [2,3,4,5,6] : value : 1},
        { cards : [7,8,9]     : value : 0},
        { cards : [10,'J','Q','K','A'] : value : -1}
    ];

    return cards.reduce( (acc,card) => {
        let found = all.find( v => v.cards.indexOf(card) !== -1 );
        if ( !found ) throw 'No such combination';
        return acc + found.value;
    }, 0);
}

抱歉,我只是意识到输入是一个数组... 您可以将throw / hold测试放在该函数之外:)