如何在JavaScript的if代码块内获取触发判断的对应条件值
解决方案
你可以提前把要校验的字段整理为数组,通过遍历筛选直接拿到所有符合条件的字段,无需单独编写多分支判断:
方案1:获取所有触发条件的空字段
如果需要处理所有值为空的字段,用filter筛选:
const checkFields = ['a', 'b', 'c', 'd'] // 筛选出所有值为空的字段 const emptyFields = checkFields.filter(field => obj[field] === '') if (emptyFields.length) { console.log('触发条件的字段:', emptyFields) // 批量处理所有空字段,无需单独写4条判断 emptyFields.forEach(field => { if (selected[field]) { // 替换为你的业务逻辑 } }) }
方案2:仅获取第一个触发的空字段
和原代码||短路逻辑一致,只取第一个匹配到的空字段,用find查找:
const checkFields = ['a', 'b', 'c', 'd'] // 按顺序查找第一个为空的字段,匹配原||的短路执行顺序 const firstEmptyField = checkFields.find(field => obj[field] === '') if (firstEmptyField) { console.log('触发条件的字段:', firstEmptyField) if (selected[firstEmptyField]) { // 替换为你的业务逻辑 } }
方案优势
- 后续新增校验字段仅需修改
checkFields数组,无需调整判断逻辑,可维护性更强 - 完全消除重复的分支判断代码,逻辑更简洁
- 可灵活适配「处理所有匹配字段」「仅处理第一个匹配字段」两种业务场景
内容的提问来源于stack exchange,提问作者Richardson
相关产品推荐
相关产品推荐

