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

如何在JavaScript中用纯数学运算实现0-100到20倍数的映射函数?

仅通过数学运算实现区间映射函数(JavaScript)

当然可以!我们可以利用向下取整和基本算术运算来实现这个需求,完全不需要条件判断或者分支语句。

实现代码

function getStepValue(num) {
  return Math.floor(num / 20) * 20;
}

工作原理拆解

这个函数的逻辑非常直观,分三步完成映射:

  • 缩小数值区间:将输入的num除以20,把0-100的范围压缩到0-5的范围(比如19→0.95,20→1,39→1.95,100→5)
  • 向下取整:用Math.floor()对缩小后的结果取整,这样所有区间内的数都会被映射到对应的整数(0.95→0,1.95→1,以此类推)
  • 还原区间:将取整后的结果乘以20,把数值还原回你需要的目标值(0→0,1→20,5→100)

边界情况验证

我们来测试几个关键输入,确认结果符合要求:

  • 输入0 → Math.floor(0/20)*20 = 0 ✔️
  • 输入19 → Math.floor(19/20)*20 = 0 ✔️
  • 输入20 → Math.floor(20/20)*20 = 20 ✔️
  • 输入39 → Math.floor(39/20)*20 = 20 ✔️
  • 输入100 → Math.floor(100/20)*20 = 100 ✔️

可选:输入范围限制

如果需要处理超出0-100的输入(比如用户输入负数或者大于100的数),可以用数学运算额外做个边界限制:

function getStepValue(num) {
  const mapped = Math.floor(num / 20) * 20;
  return Math.max(0, Math.min(100, mapped));
}

这样输入-5会返回0,输入105会返回100,依然保持纯数学运算的实现方式。

内容的提问来源于stack exchange,提问作者Sabau Mihai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 08:32:44