You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS黑杰克HiLo算牌函数疑问:else语句中card['card '+i]+i的+i作用

问题解答

你看到的card['card ' + i] + i里的+i完全是代码编写时的错误,没有任何符合HiLo算牌规则的逻辑意义,正是这个多余的写法导致了计数结果不准确。

为什么不该加i

  • 首先看输入的卡牌数组结构:数组的第i个元素是单个卡牌对象,它的唯一键就是'card ' + i,card['card ' + i]已经可以正确取出当前卡牌的面值,完全不需要额外加循环变量i。
  • 原代码的判断逻辑完全被多余的+i打乱:比如当i=3时,面值为8的牌加3后变成11,会被误判为>=10的牌,导致多减1分,完全不符合HiLo规则。

修复后的正确代码

只需要把else if分支里两处多余的+i删掉即可,为了代码可读性更高还可以把面值单独提取为变量:

function cardCounter(array) {
    var count = 0;
    for (var i = 0; i < array.length; i++) {
        var card = array[i];
        // 取出当前卡牌面值
        var cardValue = card['card ' + i];
        if (cardValue >= 2 && cardValue <= 6) {
            count++;
        } else if (cardValue >= 10 || cardValue === 'face or ace') {
            count--;
        }
        // 7、8、9不做处理,计0分
    }
    return count;
}

修复后验证

跑两个测试用例结果完全符合预期:

  • 第一个用例:2(+1)、6(+1)、8(0)、人脸牌(-1),总和为1,和预期值一致
  • 第二个用例:人脸牌(-1)、9(0)、8(0)、人脸牌(-1),总和为-2,和预期值一致

内容的提问来源于stack exchange,提问作者XYZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:45:00