Javascript производит этот простой массив чисел из простых данных

Javascript производит этот простой массив чисел из простых данных

Если кто-то может придумать лучшее название, я открыт для него. Во всяком случае, я изо всех сил пытался добиться того, чтобы это производило только правильный вывод в течение нескольких часов, но не смог заставить его работать во всех ситуациях.

Проще говоря, у меня есть список фиксированных дат, включая каждый день между диапазонами, и мне нужно создать массив промежутков между датами, которые отсутствуют в предоставленном массиве дат.

Итак, в приведенном ниже примере:

 fixed dates: [2019-09-23, 2019-09-24, 2019-09-25, 2019-09-26, 2019-09-27, 2019-09-28, 2019-09-29] given dates: [2019-09-23, 2019-09-24, 2019-09-26, 2019-09-27, 2019-09-28] 

Первое число равно 0, поскольку между датой открытия и предоставленной датой нет разрыва. Тогда оттуда только промежутки между каждой датой: [0, 1, 2, 1, 1, 2]

Чтобы было немного понятнее, как мы получаем эти числа:

  [2019-09-23, 2019-09-24, 2019-09-25, 2019-09-26, 2019-09-27, 2019-09-28, 2019-09-29] [2019-09-23, 2019-09-24, 2019-09-26, 2019-09-27, 2019-09-28] 0 1 2 1 1 2 

Через некоторое время я заработал, чтобы это работало нормально, но есть еще один фактор, есть данные, связанные с каждой датой, и если в строке два или более одинаковых, мы также пропускаем день. Обратите внимание, что данные и данные даты имеют одинаковую длину и, следовательно, одинаковые индексы. Таким образом, с двумя значениями в ряду в приведенном ниже примере мы также пропускаем это, поэтому желаемый результат будет следующим:

 fixed dates: [2019-09-23, 2019-09-24, 2019-09-25, 2019-09-26, 2019-09-27, 2019-09-28, 2019-09-29] given dates: [2019-09-23, 2019-09-24, 2019-09-26, 2019-09-27, 2019-09-28] given data: [82.0, 85.5, 85.5, 85.0, 86.5] desired output: [0, 1, 3, 1*, 1, 2] 
  • пропущенный Обязательно пропустить, иначе в списке будет слишком много элементов.

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

Если между начальной фиксированной датой и первой заданной датой есть разница, то первое число в массиве не будет равно нулю, это будет разница.

Вот некоторые данные и желаемые результаты:

 fixed dates: [2019-09-23, 2019-09-24, 2019-09-25, 2019-09-26, 2019-09-27, 2019-09-28, 2019-09-29, 2019-09-30, 2019-10-01, 2019-10-02, 2019-10-03, 2019-10-04] given dates: [2019-09-23, 2019-09-24, 2019-09-26, 2019-09-27, 2019-09-28, 2019-10-01] given data: [82.0, 85.0, 84.0, 85.0, 86.5, 84.0] desired output: [0, 1, 2, 1, 1, 3, 3] fixed dates: [2019-09-09, 2019-09-10, 2019-09-11, 2019-09-12, 2019-09-13, 2019-09-14, 2019-09-15, 2019-09-16, 2019-09-17, 2019-09-18] given dates: [2019-09-10, 2019-09-11, 2019-09-12, 2019-09-13, 2019-09-15, 2019-09-17] given data: [85.0, 81.0, 85.0, 85.0, 83.0, 85.5] desired output: [1, 1, 1, 3, 2*, 2, 2] * skipped Must skip otherwise there will be too many elements. fixed dates: [2019-09-09, 2019-09-10, 2019-09-11, 2019-09-12, 2019-09-13, 2019-09-14, 2019-09-15, 2019-09-16, 2019-09-17, 2019-09-18, 2019-09-19, 2019-09-20, 2019-09-21, 2019-09-22] given dates: [2019-09-10, 2019-09-11, 2019-09-12, 2019-09-13, 2019-09-15, 2019-09-17, 2019-09-18, 2019-09-19, 2019-09-20, 2019-09-21] given data: [85.0, 81.0, 85.0, 85.0, 83.0, 85.5, 85.0, 86.0, 85.0, 84.5] desired output: [1, 1, 1, 3, 2*, 2, 1, 1, 1, 1, 2] * skipped Must skip otherwise there will be too many elements. fixed dates: [2019-09-09, 2019-09-10, 2019-09-11, 2019-09-12, 2019-09-13, 2019-09-14, 2019-09-15, 2019-09-16, 2019-09-17, 2019-09-18, 2019-09-19, 2019-09-20, 2019-09-21, 2019-09-22] given dates: [2019-09-10, 2019-09-11, 2019-09-12, 2019-09-13, 2019-09-15, 2019-09-16, 2019-09-17, 2019-09-18, 2019-09-19, 2019-09-20, 2019-09-21] given data: [85.0, 81.0, 85.0, 85.0, 83.0, 83.5, 85.5, 85.0, 85.0, 85.0, 84.5] desired output: [1, 1, 1, 3, 2*, 1, 1, 1, 3, 2*, 1*, 2] * skipped Must skip otherwise there will be too many elements. 

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

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector