[英]How to create scales between min and max value using ranges in javascript?
我需要创建一个像这样的动态秤
Range 1 = 0 to 100
Range 2 = 100 to 200
Range 3 = 200 to 300
Range 4 = 300 to 400
Range 5 = 400 to 500
Range 6 = 600 to 700
Range 7 = 700 to 800
Range 8 = 800 to 900
Range 9 = 900 to 1000
这里,范围是1到9,最小值是0,最大值是1000.这些范围,最小值和最大值是动态的。
因此,我需要一个函数来返回刻度。
例如:-
function getScales(minRage, maxRange, minValue, maxValue){
var scales={};
..........
............
return scales;
}
//Output:
[
{
range :1
min :0,
max :100
},
{
range :2
min :100,
max :200
},
{
range :3
min :200,
max :300
},
....
....
{
range :9,
min :900,
max :1000
}
]
为了获得上述结果,我需要像这样的getScales(1, 9, 0, 1000)
调用函数。
这就是我的实际要求:如果我调用getScales(1, 5, 4000, 418500)
;
看看这个:
function getScales(minRange, maxRange, min, max){
var scales = [], // Prepare some variables
ranges = maxRange+1 - minRange, // Amount of elements to be returned.
range = (max-min)/ranges; // Difference between min and max
for(var i = 0; i < ranges; i++){
scales.push({
range: i+minRange, // Current range number
min: min + range * i,
max: min + range * (i+1)
});
}
return scales;
}
您可以像这样调用函数:
getScales(0, 9, 0, 1000);
输出:
[
{
"range": 0,
"min": 0,
"max": 100
},
{
"range": 1,
"min": 100,
"max": 200
},
.......
{
"range": 8,
"min": 800,
"max": 900
},
{
"range": 9,
"min": 900,
"max": 1000
}
]
要摆脱输出中的浮点错误,可以替换:
min: range * i,
max: range * (i+1)
附:
min: (range * i).toFixed(2),
max: (range * (i+1)).toFixed(2)
将2
替换为小数点后面的所需数字位数。
像这样的东西:
var factory = function(start, end, minV, maxV){
var result = [],
st = (maxV - minV) / (end - start + 1),
buffer = minV;
for(var i = 0; i <= end - start; i++){
buffer = st * i + minV;
result.push({
range: i,
minValue: buffer.toFixed(2),
maxValue: (buffer + st).toFixed(2)
});
}
return result;
}
console.log(JSON.stringify(factory(0, 4, 253, 467)))
一些解释:@start和@end描述范围数,@minV-第一个范围以此值开头,@ maxV-最后的范围以此值结尾
产量
[{"range":0,"minValue":"253.00","maxValue":"295.80"},{"range":1,"minValue":"295.80","maxValue":"338.60"},{"range":2,"minValue":"338.60","maxValue":"381.40"},{"range":3,"minValue":"381.40","maxValue":"424.20"},{"range":4,"minValue":"424.20","maxValue":"467.00"}]
玩演示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.