2016-04-03 48 views
0

我有变动数0-100变动数的范围,大规模使用JavaScript

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

所以当我有0,这将是20等等......

我该怎么办?

+0

您可以包括'javascript'在问题试过吗? ,创建stacksnippets来演示? – guest271314

+0

只需'x * 0.4 + 20'。这就是我如何得到'0.4':(60 - 20)/(100-0)' – saeedgnu

回答

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 
+0

谢谢你的及时和有益的解决方案队友! :) – neoDev