【发布时间】:2023-01-28 02:24:37
【问题描述】:
尝试构建一个视频扑克应用程序,我已经完成了大部分的获胜逻辑,但我无法理解两对。
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,
},
]
【问题讨论】:
-
你的函数应该接受手的争论,而不是在函数外部引用,除非你可以为你实现的特定类公开更多。
标签: javascript javascript-objects poker