2016-04-03 40 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