如何用JS按区间规则计算返回数值(规避大量分支)
高效实现数值区间计算方案
不用写大量switch case分支,直接通过数学运算就能搞定这个逻辑,核心是提取数值对应的区间系数,再乘以300即可。
实现思路
先拆解规则:
- 100 < 数值 < 200 → 系数1 → 1×300
- 200 < 数值 < 300 → 系数2 → 2×300
- ...
- N×100 < 数值 < (N+1)×100 → 系数N → N×300
系数N其实就是数值除以100后的整数部分,只需处理好临界值(比如100、200这类边界数)的判断即可。
代码实现
function calculateValue(num) { // 处理数值≤100的情况,可根据需求返回0或其他默认值 if (num <= 100) { return 0; } // 计算对应区间的系数,兼容任意大数 const coefficient = Math.floor((num - 1) / 100); return coefficient * 300; } // 测试示例 console.log(calculateValue(120)); // 输出300(1×300) console.log(calculateValue(230)); // 输出600(2×300) console.log(calculateValue(1050)); // 输出3000(10×300) console.log(calculateValue(10001)); // 输出30000(100×300)
逻辑说明
(num - 1) / 100:避免临界值(如200)被错误归类,比如200-1=199,除以100后取整为1,符合“大于200才返回2×300”的要求。Math.floor():对正数取整直接得到区间系数,不管数值是10000还是20000,都能一次计算完成,完全不用新增分支。
如果你的需求允许数值等于区间下限(比如100≤数值<200就返回1×300),直接把系数计算改成Math.floor(num / 100)即可,根据实际场景微调就行。
内容的提问来源于stack exchange,提问作者Emad Rashad Muhammed
相关产品推荐
相关产品推荐

