JavaScript如何简化使用includes判断值含指定数字范围的冗余if代码
优化实现方案
核心思路是减少重复DOM取值+用规则匹配替代枚举判断+配置化管理区间价格,代码可读性和可维护性都会高很多。
方案1:适配动态数值区间(推荐)
如果后续可能调整数值范围、新增区间,用这个方案最方便,只需要修改配置项即可:
// 提前缓存取值,避免重复调用jQuery的val()方法损耗性能 const ptValue = $(attrPTVal).val() const psValue = $(attrPSVal).val() let setup_price = '' if (ptValue.includes('SCR1')) { // 用正则提取面积数值 const areaNum = psValue.match(/From (\d+\.?\d*) cm2/)?.[1] if (!areaNum) return // 匹配不到符合格式的数值直接终止 const num = parseFloat(areaNum) // 区间价格配置表,后续新增规则直接加行即可 const priceMap = [ [2, 2.2, '2.14'], // [区间最小值, 区间最大值, 对应价格] [3, 3.2, '5.14'] ] // 遍历匹配区间 for (const [min, max, price] of priceMap) { if (num >= min && num <= max) { setup_price = price break } } }
方案2:固定前缀快速判断
如果你确认所有符合条件的值都是From 2、From 3开头,没有其他同开头的异常值,可以用更精简的写法:
const ptValue = $(attrPTVal).val() const psValue = $(attrPSVal).val() let setup_price = '' if (ptValue.includes('SCR1')) { if (psValue.startsWith('From 2')) setup_price = '2.14' else if (psValue.startsWith('From 3')) setup_price = '5.14' }
内容的提问来源于stack exchange,提问作者Billy
相关产品推荐
相关产品推荐

