如何使用javascript中的范围创建最小值和最大值之间的比例?

Moh*_*eek 2 javascript arrays function object

我需要创建一个像这样的动态扩展

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
Run Code Online (Sandbox Code Playgroud)

这里,范围是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
    }
  ]
Run Code Online (Sandbox Code Playgroud)

为了得到上述结果,我需要像这样调用函数getScales(1, 9, 0, 1000).

这就是我的实际要求:如果我打电话getScales(1, 5, 4000, 418500);

Cer*_*rus 7

看看这个:

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;
}
Run Code Online (Sandbox Code Playgroud)

您可以像这样调用函数:

getScales(0, 9, 0, 1000);
Run Code Online (Sandbox Code Playgroud)

输出:

[
    {
        "range": 0,
        "min": 0,
        "max": 100
    },
    {
        "range": 1,
        "min": 100,
        "max": 200
    },
    .......
    {
        "range": 8,
        "min": 800,
        "max": 900
    },
    {
        "range": 9,
        "min": 900,
        "max": 1000
    }
]
Run Code Online (Sandbox Code Playgroud)

要摆脱输出中的浮点错误,可以替换:

min: range * i,
max: range * (i+1)
Run Code Online (Sandbox Code Playgroud)

附:

min: (range * i).toFixed(2),
max: (range * (i+1)).toFixed(2)
Run Code Online (Sandbox Code Playgroud)

替换2小数点后面的所需数字位数.