如何检查字符串是否匹配数据库中存储的任意字符串,现有代码仅校验首条
问题根因
你的代码无论匹配结果如何,都会在循环第一次执行时就直接返回,完全不会遍历后续的存储数据:
- 第一条数据不匹配:直接返回"Invalid Key provided."
- 第一条数据匹配:直接返回true
自然无法完成全量校验。
修复方案
正确的逻辑应该是:遍历所有key的过程中,只要找到任意一个匹配项就立刻返回true;只有全量遍历完所有数据都没有找到匹配项时,再返回错误提示。
修复后的代码如下:
for (const key in keys) { if (keys[key].key === hashedQueryKey) { return true; } } // 遍历完所有key都未匹配到才返回错误 return "Invalid Key provided."
可选优化
如果你存储key的keys是数组类型,还可以用数组内置的some方法简化代码,逻辑更直观:
const isKeyValid = keys.some(item => item.key === hashedQueryKey) return isKeyValid ? true : "Invalid Key provided."
内容的提问来源于stack exchange,提问作者FikGamer
相关产品推荐
相关产品推荐

