公司名称多条件非包含判断逻辑问题求助(附代码)
解决表单判断逻辑问题:正确判断公司名既不包含Be也不包含Pe
我来帮你理清楚这个逻辑问题哈!你之前的核心问题是逻辑运算符用错了,导致判断条件不符合预期,另外还需要处理名称未输入的边界情况。
问题分析
你写的!this.company.name.includes("Be") || !this.company.name.includes("Pe")其实表达的是只要公司名不同时包含Be和Pe,就会触发这个分支——比如公司名是"BeCorp",它不包含Pe,所以!includes("Pe")为true,整个条件就成立了,这显然不是你想要的“既不包含Be也不包含Pe”的判断。
根据逻辑运算的De Morgan定律,“既不包含A也不包含B”等价于“不包含A 并且 不包含B”,也就是要用&&而不是||。
另外,你提到的“未输入时的问题”,是因为当this.company.name为空字符串时,!includes("Be")和!includes("Pe")都会返回true,会错误触发category=0的分支,所以我们需要先单独处理空名称的情况。
修正后的代码
if (this.company) { // 先处理名称未输入/为空的情况 if (!this.company.name || this.company.name.trim() === '') { // 这里可以根据需求设置默认值,比如: this.category = null; // 或者你想要的其他处理,比如提示用户输入 // 移除表单后续问题的代码也可以在这里调整,避免空值触发错误逻辑 } // 正确判断:既不包含Be也不包含Pe else if (!this.company.name.includes("Be") && !this.company.name.includes("Pe")) { this.category = 0; // 用于移除表单后续问题的代码.. } else if (this.company.name.includes("Be")) { this.category = 1; // 相关代码... } else if (this.company.name.includes("Pe")) { this.category = 2; // 相关代码... } }
额外提示
如果需要忽略大小写判断(比如公司名是"beCorp"或者"PEGroup"也能匹配),可以把字符串转成小写后再判断:
const companyName = this.company.name.toLowerCase(); // 后续判断用companyName.includes("be")和companyName.includes("pe")
内容的提问来源于stack exchange,提问作者Fastersixth
相关产品推荐
相关产品推荐

