Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Выбор в массиве с датами определенного значения (https://javascript.ru/forum/jquery/49161-vybor-v-massive-s-datami-opredelennogo-znacheniya.html)

Эдди 31.07.2014 16:28

Выбор в массиве с датами определенного значения
 
Прошу прощения, если не туда запостил.

1. Есть форма (слава Богу, скрипт уже близится к завершению).
Есть в ней календарь jquery datapicker.

При открытии страницы по умолчанию дата календаря выводится сегодняшним днем + 1.

2. Есть массив с датами, отсортированными в порядке ASC.

Если нажимаем кнопку button submit, функция проверяет, если ли заезд в этот день.
Если нет заезда в этот день, то при помощи confirm() предлагает:
- Да - выбрать ближайшую следующую дату, по которой есть заезд (заезды в массиве)
- Нет - Я сам выберу в календаре нужную подсвеченную дату.

Вопрос:
Если есть заезды, к примеру:
1 августа
1 сентября
1 октября
1 декабря

Мне прокручивать весь массив с места, которое выбрал клиент?
Или есть более простой способ?

К примеру.
Выбрана дата в календаре - 25 сентября.
Как найти ближайщую следующую по времени дату (которая будет равняться 1 октября), не прокручивая массив по циклу и не делая лишнюю работу.

И так файл script вырос уже в размерах.

Спасибо.

Rise 31.07.2014 16:35

Эдди, очевидно следующая от текущей дата в массиве будет искомой.

Эдди 31.07.2014 17:03

Да

Эдди 31.07.2014 19:48

Сделаю ка я аяксом проверку. На php все же легче.

BETEPAH 31.07.2014 23:59

Цитата:

Сообщение от Эдди
Как найти ближайщую следующую по времени дату (которая будет равняться 1 октября), не прокручивая массив по циклу и не делая лишнюю работу.
И так файл script вырос уже в размерах.

Размер - не главное :)
Там же всего 3 строчки для цикла.
Ну, можно попробовать сделать хэш-объект, в котором ключи - даты, а значения - индекс в массиве. Тогда берем их хэша по дате индекс, смотрим, есть ли в массиве элемент под номером (индекс + 1).
В порядке бреда предложил, сам так не делал бы :) Проще массив перебрать.


Часовой пояс GMT +3, время: 19:16.