试图建立一个视频扑克应用程序,我已经得到了大部分的获胜逻辑做,但我不能把我的头周围的两对。
function isTwoPair() {
const tempHand = [...playerHand];
let reduceHand = tempHand.reduce((acc, curVal) => {
if (curVal.rank in acc) {
acc[curVal.rank]++;
} else {
acc[curVal.rank] = 1;
}
return acc;
}, {});
const sortedHand = Object.fromEntries(Object.entries(reduceHand).sort());
for (const [key, value] of Object.entries(reduceHand)) {
let pairs = 0;
if (value === 2) {
pairs++;
if (pairs === 2) {
return true;
}
}
}
}
我的想法是使用reduce来确定每个键所具有的值的数量,然后对其进行排序(升序)并循环,如果任何值等于2,则它将pairs变量更新为1,一旦pairs达到2,则它将返回true。
什么是更好的方法,或者说正确的方法,因为这不起作用,在给定的对象数组中找到两个对。
甲板是一个对象阵列,如下所示:
[
{
card: "Ah",
rank: 14,
suit: "hearts",
img: "./images/hearts/hearts-A.svg",
isHold: false,
},
]
3条答案
按热度按时间nle07wnf1#
决心会让你到达那里!热dawg!!
niwlg2el2#
我会计算每张牌的点数。如果点数大于2,则返回false。计算后,过滤值为2的值,如果其长度等于2,则返回
完整示例:
tp5buhyn3#
我建议传入
playerHand
,这样你的函数就可以被多手使用,如果你不熟悉,~~
有一个副作用,那就是把不真实的值变成0,而整数保持不变。