想知道是否存在优化比较语法的选项(使其更胜一筹)
我有一个简单的代码,该代码通过“ if-else”条件语句检查对函数的输入。我使用逻辑“或”运算符来验证变量是否等于输入之一。
X [54, 67]
a [54]
b [67]
Y [25,16,34,24]
c [25,16]
d [34,24]
我想知道是否可以用另一种语法替换此数量的“ OR”运算符? 我知道“切换”方法,但是现在我对这种方法特别感兴趣。
谢谢!
答案 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测试放在该函数之外:)