使用javascript将数字更改为范围

时间:2016-04-03 15:08:41

标签: javascript

我的号码改为0-100,

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

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

我该怎么办?

1 个答案:

答案 0 :(得分:1)

比例因子为(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