Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据最小值和最大值之间的值计算宽度百分比?_Javascript - Fatal编程技术网

Javascript 如何根据最小值和最大值之间的值计算宽度百分比?

Javascript 如何根据最小值和最大值之间的值计算宽度百分比?,javascript,Javascript,我正在努力解决一个简单的问题。实现这一目标的优雅方式是什么 我有两个值最小值和最大值,可以是正或负,第三个值介于两者之间。现在我想计算其他给定的数字的位置(百分比),在我的例子中,这是元素的宽度。 例如,在这里,我想找出在0-200范围内的位置是什么,代表在-500到600范围内的值-10 var min = -500; var max = 600; var value = -10; var width = 200; var positionInWidth = ???; 您可以只使用一行

我正在努力解决一个简单的问题。实现这一目标的优雅方式是什么

我有两个值最小值最大值,可以是,第三个值介于两者之间。现在我想计算其他给定的数字的
位置(百分比)
,在我的例子中,这是元素的宽度。
例如,在这里,我想找出在0-200范围内的位置是什么,代表在-500到600范围内的值-10

var min = -500;
var max = 600;
var value = -10;

var width = 200; 

var positionInWidth = ???;

您可以只使用一行代码,但让我们分几个步骤来了解它的工作原理:

//首先我们得到总范围
变量长度=最大值-最小值;//1100
//然后我们用起始位置偏移位置
变量位置长度=值-最小值;//490
//现在我们通过位置中的值获得百分比
变量值百分比=位置长度/长度;
//或一个线性(最小值)/(最大值-最小值);
//最后,应用“宽度百分比”`
常量位置宽度=宽度*值百分比;
或作为一个班轮:

const positionInWidth=width*((value-min)/(max-min));

您可以使用一行程序来完成此操作,但让我们通过几个步骤来了解它的工作原理:

//首先我们得到总范围
变量长度=最大值-最小值;//1100
//然后我们用起始位置偏移位置
变量位置长度=值-最小值;//490
//现在我们通过位置中的值获得百分比
变量值百分比=位置长度/长度;
//或一个线性(最小值)/(最大值-最小值);
//最后,应用“宽度百分比”`
常量位置宽度=宽度*值百分比;
或作为一个班轮:

const positionInWidth=width*((value-min)/(max-min));

如果我正确理解了这个问题,那么您正在寻找所谓的map函数。如果是这种情况,则实现如下所示:

function map(input, inMin, inMax, outMin, outMax) {
    return (input - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;
}
在您的场景中,outMin=0:

console.log(map(-10, -500, 600, 0, 200)); // === 89.0909090909091

如果我正确理解了这个问题,您正在寻找所谓的map函数。如果是这种情况,则实现如下所示:

function map(input, inMin, inMax, outMin, outMax) {
    return (input - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;
}
在您的场景中,outMin=0:

console.log(map(-10, -500, 600, 0, 200)); // === 89.0909090909091