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



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

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

我想在这个数组arr中插入一个新的数字,但我想确保它离这个谱中已经存在的任何两个数字最远。

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

我知道这个问题有点笼统,但它对自动调度cronjobs非常有用,这样它们就不会重叠,我甚至不知道从哪里开始。

也许你听说过类似的问题和可能的解决方案?或节点。Js模块做类似的事情?

如果数组的值是有序的,您可以检查一个值和前一个值,pic最大的delta,并计算在中间的时间。

let array = [35, 23, 25, 59, 10];
array.sort((a, b) => a - b); // sorts numbers in ascending order
let 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);
console.log(parseInt(result)); // in case if used for cron

相关内容

最新更新