为何变量richtigeHoeren仅计数至10?数组比对问题求助
排查
richtigeHoeren计数仅到10的常见原因 嗨,我来帮你捋捋这个计数卡壳在10的问题,大概率是这几个地方出了状况:
- 先确认正确单词数组的实际长度:会不会你误以为正确数组有15个单词,但实际只有10个?比如编写时不小心漏了5个词,或者数组里的重复项被去重处理了?如果正确数组本身只有10个元素,那就算输入全对,最多也只能计数到10。
- 检查循环比对的逻辑:
- 有没有循环次数设置错误?比如你写的循环条件是
i < 10而不是i < 15,导致只遍历了前10个输入单词? - 是不是比对时用了“匹配到一个正确单词就标记该正确词已使用”的逻辑?比如用
indexOf找到匹配后就splice删除正确数组里的对应项,要是正确数组里只有10个唯一单词,输入的15个里有重复的,那重复的匹配就不会被计数,最终只能到10。 - 有没有不小心在循环里加了
break或者return,提前终止了循环?不过这种情况一般会计数更少,但也可以排查下。
- 有没有循环次数设置错误?比如你写的循环条件是
- 检查变量的初始化和修改:
- 会不会
richtigeHoeren在循环内部被重新初始化了?比如每次循环都把它设为0,不过这种情况计数应该会一直是1,可能性不大,但也可以确认下。 - 有没有其他代码偷偷修改了这个变量?比如循环外有重置它为10的逻辑?
- 会不会
- 加个调试小代码快速定位:
在每次匹配成功的时候,打印当前计数和匹配的单词,同时确认两个数组的长度,比如:
这样就能看到计数卡在10的时候,是不是某个单词没匹配上,或者循环提前结束了。// 先确认数组长度 console.log("输入数组长度:", inputArray.length, "正确数组长度:", correctArray.length); // 比对时打印计数 inputArray.forEach(word => { if (correctArray.includes(word)) { richtigeHoeren++; console.log(`匹配到:${word},当前计数:${richtigeHoeren}`); } });
内容的提问来源于stack exchange,提问作者Herophes Spartano
相关产品推荐
相关产品推荐

