使用js将动态范围分成相等的部分

Chi*_*iko -1 javascript numbers

所以我要解决的问题是获得一个动态范围并将其分成 6 个部分。

例如,范围可以从 6.1 开始到 93.6 结束。或者像 6-24 一样简单。

最后,我想要做的是在该范围内获得 6 个不同的点。如果是 1-24,那就是 4、8、12、16、20、24。

这是我使用的一种方法,但结果不太准确:

const range = {start: '', end: ''};
const offset = Math.ceil(range.end / 6);

const markers = []
for(let i = offset; i <= range.end; i++){
  if(range.end % i == 0){
    markers.push(i)
  }
}
console.log(markers);
Run Code Online (Sandbox Code Playgroud)

Nin*_*olz 9

对于六个零件,您需要五个偏移量。该偏移量由左右的增量除以部分减一计算。

然后迭代直到取所有较小的部分,最后取正确的值而不进行任何计算以防止浮点算术错误。

function split(left, right, parts) {
    var result = [],
        delta = (right - left) / (parts - 1);
    while (left < right) {
        result.push(left);
        left += delta;
    }
    result.push(right);
    return result;
}

console.log(split(6, 24, 6));
console.log(split(6.1, 93.6, 6));
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)