如何让JavaScript检测对象键是否包含敏感词子串而非全匹配?
解决对象键包含敏感词子串的匹配问题
你的问题出在当前代码用的是全字符串匹配(includes(el)检查的是键数组是否完全等于敏感词),而需求是判断键是否包含敏感词作为子串。只需修改匹配逻辑,改为检查每个键是否包含对应敏感词即可:
const body = { name: "", email: "", otpp: "" } const sensitiveWords = ["password", "pin", "otp"] const isSensitive = sensitiveWords.some(sensitiveWord => // 遍历body的所有键,只要有一个键包含当前敏感词就返回true Object.keys(body).some(key => key.toLowerCase().includes(sensitiveWord.toLowerCase()) ) ) console.log(isSensitive); // 输出: true
逻辑说明:
- 外层
some遍历敏感词数组,只要有一个敏感词满足匹配条件,整个表达式就返回true - 内层
some遍历body的键,将键转为小写后,检查是否包含当前敏感词(同时将敏感词转小写是为了实现大小写不敏感匹配,比如键是OTPP也能匹配otp) - 不需要额外添加
|| false,因为Array.prototype.some本身就会返回布尔值:找到匹配项返回true,无匹配项返回false
内容的提问来源于stack exchange,提问作者Surjith S M
相关产品推荐
相关产品推荐

