JavaScript如何在if代码块中根据用户输入动态添加判断条件
JavaScript动态组合判断条件实现方案
首先你示例中用const声明可修改的filter变量不符合语法,需要改为let声明。下面是两种可直接落地的实现方案:
方案1:直接累计布尔值(轻量场景首选)
适合判断条件少、逻辑简单的场景,直接通过布尔运算累加判断结果即可:
// 模拟业务数据 const target = { city: '上海', skillList: ['JavaScript', 'Node.js'] } // 用户输入的开关值 const locationCheckEnabled = true const skillCheckEnabled = true let isValid = true // 动态叠加判断条件 if (locationCheckEnabled) { // 第一个判断条件:所在地为上海,可替换为你的实际逻辑 isValid = isValid && target.city === '上海' } if (skillCheckEnabled) { // 第二个判断条件:掌握JavaScript,可替换为你的实际逻辑 isValid = isValid && target.skillList.includes('JavaScript') } if (isValid) { console.log("Hello") }
方案2:条件函数数组(多条件扩展场景首选)
适合判断条件数量多、后续可能新增条件的场景,把每个判断逻辑封装为独立函数,动态添加到条件数组后统一校验:
// 模拟业务数据 const target = { city: '上海', skillList: ['JavaScript', 'Node.js'], age: 25 } // 用户输入的开关值 const locationCheckEnabled = true const skillCheckEnabled = true const ageCheckEnabled = true const conditions = [] // 动态添加需要生效的判断条件 if (locationCheckEnabled) { conditions.push(t => t.city === '上海') } if (skillCheckEnabled) { conditions.push(t => t.skillList.includes('JavaScript')) } if (ageCheckEnabled) { conditions.push(t => t.age >= 18) } // 所有生效条件都满足则校验通过,若需要满足任意一个生效条件即可,把every改为some const isValid = conditions.every(checkFunc => checkFunc(target)) if (isValid) { console.log("Hello") }
内容的提问来源于stack exchange,提问作者Gaurav
相关产品推荐
相关产品推荐

