javascript - 使用 javascript 将数字更改为范围

标签 javascript

我有一个变化的数字 0-100,

现在我需要将其转换为 20-60 范围,

所以当我有 0 时,它将是 20,依此类推...

我该怎么办?

最佳答案

比例因子为(newMax - newMin)/(prevMax - prevMin)。您还需要沿着数轴移动 newMin - prevMin

function generateScaleFunction(prevMin, prevMax, newMin, newMax) {
    var offset = newMin - prevMin,
        scale = (newMax - newMin) / (prevMax - prevMin);
    return function (x) {
        return offset + scale * x;
    };
};

使用

var fn = generateScaleFunction(0, 100, 20, 60);
fn(  0); // 20
fn( 25); // 30
fn( 50); // 40
fn( 75); // 50
fn(100); // 60

// please note you are not guaranteed an int
fn(1); // 20.4

关于javascript - 使用 javascript 将数字更改为范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36387135/

相关文章:

javascript - jQuery .hover 和 .mouseleave 意外循环。我该如何解决

javascript - 尝试使用在 React 中映射的输入字段将数据绑定(bind)到状态

javascript - Ember PromiseArray sortBy

javascript - C# 属性值不会在 Javascript/jquery 中被修改

java - 如何在 Struts 2 中提交特定的迭代器条目以执行操作

c# - 显示动态复选框的现有选择

javascript - 无法读取未定义 AJAX 的属性 'length'

javascript - Yeoman-Angular 生成的应用程序中缺少 Angular 脚本

javascript - 动态下载javascript,稍后执行

javascript - 使 YouTube 嵌入式 iframe 视频完全适合 div 而没有黑边?