如何自动化简化批量相似IF语句实现kW值逻辑计算
简化重复IF语句的实现方案
原重复代码
var supplier_kw_per_rack = 2; if (kw_value === '1+kW'){ var kw_integer = 1; var ongoing_kw = 350; } if (kw_value === '2+kW'){ var kw_integer = 2; var ongoing_kw = 350; } if (kw_value === '3+kW'){ var kw_integer = 3; var ongoing_kw = 700; } if (kw_value === '4+kW'){ var kw_integer = 4; var ongoing_kw = 700; } // 后续重复IF语句省略
上下文说明
- kw_value是下拉框选中值,CMS仅能输出完整格式(如
1+kW),无法提供纯数字value - kw_integer是从选中值中提取的纯整数
- ongoing_kw按
supplier_kw_per_rack的数值分组,每一组对应一个固定值,每组递增350;例如supplier_kw_per_rack=2时,每2个整数对应同一ongoing_kw,改为4则每4个整数为一组
已实现的整数提取逻辑
// 提取kw_integer var kw_integer = Number(kw_value.substring(0, kw_value.length - 3));
完整解决方案
根据kw_integer和supplier_kw_per_rack的分组规则,可通过数学计算直接得出ongoing_kw,彻底摆脱重复IF判断:
var supplier_kw_per_rack = 2; const BASE_KW = 350; // 提取纯整数,slice(0, -3)更简洁地去除末尾的"+kW" var kw_integer = Number(kw_value.slice(0, -3)); // 计算当前kw_integer所在的分组序号,向上取整确保同组数值归为同一序号 const groupIndex = Math.ceil(kw_integer / supplier_kw_per_rack); // 按分组序号计算对应ongoing_kw,每组递增350 var ongoing_kw = groupIndex * BASE_KW;
逻辑解释
- 提取整数:用
slice(0, -3)替代substring,更简洁地截断末尾固定格式的字符,转换为数字得到kw_integer - 分组计算:
Math.ceil()向上取整,将kw_integer按supplier_kw_per_rack的大小自动分组,比如supplier_kw_per_rack=2时,1、2属于第1组,3、4属于第2组,以此类推 - 计算目标值:每组对应
BASE_KW(350)的倍数,直接用分组序号乘以350即可得到对应ongoing_kw
该方案无需维护大量IF语句,修改supplier_kw_per_rack后逻辑自动适配新的分组规则。
内容的提问来源于stack exchange,提问作者Chuwa Feet
相关产品推荐
相关产品推荐

