You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 16:36:04