首页 > 解决方案 > 在 N 个区间内拆分最小值和最大值的范围

问题描述

我有一个数组minmax。我需要一个类似于这个问题的解决方案,但我也有一个min价值。例如,我有一个数组[108090, 498090]。如何min在以下函数中添加条件?

function getIntervalls(max, nbIntervalls) {
    var size = Math.round((max-1) / nbIntervalls);
    var result = [];

    for (let i = 0; i < nbIntervalls; i++) {
        var inf = i + i * size;
        var sup = inf + size < max ? inf + size: max;

        result.push([inf, sup]);
        if(inf >= max || sup >= max)break;
    }
    return result;
}
getIntervals(108090, 5)

上述函数的输出为:

    [
     [
        0,
        99618
     ],
     [
        99619,
        199237
     ],
     [
        199238,
        298856
     ],
     [
        298857,
        398475
     ],
     [
        398476,
        498090
     ]
    ]

但我也想发送min价值。所以我的要求应该是[108090, ...], [..,..], [..,..], [..,..], [..,498090].

提前致谢!!!

标签: javascriptarrayssplit

解决方案


  • 我要做的是将值减去该minmax,因此您现在正在处理与作为参数传递的间隔线性相关的数字。
  • 然后,当您推送结果值时,只需再次添加最小值:

function getIntervals(min, max, nbIntervalls) {
    max -= min;  // --------------------------> subtract min
    var size = Math.round((max-1) / nbIntervalls);
    var result = [];

    for (let i = 0; i < nbIntervalls; i++) {
        var inf = i + i * size;
        var sup = inf + size < max ? inf + size: max;

        result.push([inf + min, sup + min]);  // --------------------> add again min
        if(inf >= max || sup >= max)break;
    }
    return result;
}

console.log(getIntervals(108090, 498090, 5))


推荐阅读