Чтобы добавить объекты с датами и массивами часов в массив, а также изменить коды так, чтобы каждое время начиналось на 3 часа меньше и заканчивалось на 1 час больше, можно использовать следующий подход на JavaScript:
1. Создать массив объектов, где каждый объект будет содержать дату и соответствующий массив часов.
2. Для каждой даты с определённым временным интервалом генерировать часы, принимая во внимание описанное смещение.
Вот пример кода:
```javascript
function generateHours(startHour, endHour) {
const hours = [];
for (let hour = startHour; hour <= endHour; hour++) {
hours.push(hour);
}
return hours;
}
function addDateWithHours(date, startTime, endTime, dataArray) {
// Уменьшаем стартовое время на 3 часа и увеличиваем конечное время на 1 час
const adjustedStart = startTime - 3;
const adjustedEnd = endTime + 1;
const hoursArray = generateHours(adjustedStart, adjustedEnd);
// Создаем объект с датой и массивом часов
const dateObject = {
date: date,
hours: hoursArray
};
// Добавляем объект в массив
dataArray.push(dateObject);
}
const datesArray = []; // Массив для хранения объектов с датами и часами
// Пример использования
addDateWithHours('2023-10-01', 9, 17, datesArray);
addDateWithHours('2023-10-02', 10, 18, datesArray);
// Выводим результат
console.log(datesArray);
```
### Объяснение кода:
1. **Функция `generateHours(startHour, endHour)`**: Эта функция принимает две величины (начальный и конечный час) и генерирует массив, который включает все часы от `startHour` до `endHour`.
2. **Функция `addDateWithHours(date, startTime, endTime, dataArray)`**: Эта функция принимает дату, начальное и конечное время, а также массив, в который добавляется новый объект. Здесь происходит смещение времени: начальное время уменьшается на 3 часа, а конечное увеличивается на 1 час. После этого создается объект с датой и массивом часов.
3. В основном коде мы создаем пустой массив `datesArray` и добавляем в него несколько объектов, используя функцию `addDateWithHours`.
Вы можете легко изменить даты и время для тестирования, и программа будет корректно формировать массив объектов с нужным форматированием!