Javascript:向一组值(分钟)中添加一个新值,该值距现有的两个cronjobs都最远

问题描述 投票:0回答:1

假设我有一个数字数组(表示cron作业应运行的分钟数:]]

let arr = ['21', '23', '25', '59', '10']

我想在此数组arr中插入一个新数字,但我要确保它与该频谱中已经存在的任何两个数字相距最远。

直觉上我可以说它应该在44左右,但是我如何将其编程为算法?

我知道这个问题有点笼统,但是对于自动计划cronjobs很有用,这样它们就不会重叠,甚至我都不知道从哪里开始。

也许您听说过类似的问题以及可能的解决方案?还是执行类似操作的Node.Js模块?

javascript arrays cron statistics distribution
1个回答
0
投票

如果数组的顺序正确,则可以检查一个值和先前的值,确定最大增量并计算中间的时间。

let array = [21, 23, 25, 59, 10],
    result = array
        .reduce((r, value, i, { length, [(i + length - 1) % length]: prev }) => {
            var delta = (value + 60 - prev) % 60;
            if (!r || delta > r.delta) return { delta, value: (prev + delta / 2) % 60 };
            return r;
        }, undefined)
        .value;

console.log(result);
© www.soinside.com 2019 - 2024. All rights reserved.