Javascript: добавление нового значения к набору значений (минут), которое наиболее далеко от любых двух существующих cronjobs - PullRequest
2 голосов
/ 24 марта 2020

Предположим, у меня есть массив чисел (которые указывают минуты, когда должны выполняться задания cron):

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

Я хочу вставить новое число в этот массив arr, но я хочу сделать убедитесь, что он находится дальше всех двух чисел, которые уже существуют в этом спектре.

Интуитивно я могу сказать, что это должно быть где-то около 44, но как мне запрограммировать это в алгоритм?

Я знаю, что этот вопрос немного общий, но он очень полезен для составления расписания cronjobs автоматически, чтобы они не перекрывались, и я даже не знаю, с чего начать.

Может быть, вы слышали о подобной проблеме и возможном решении? Или Node.Js модуль, который делает что-то подобное?

1 Ответ

1 голос
/ 24 марта 2020

Если значения массива в порядке, вы можете проверить значение и предыдущее значение, pi c наибольшая дельта и вычислить время в середине.

    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...