Есть ли более быстрый метод, чем вложенные циклы forEach, как показано в javascript? - PullRequest
0 голосов
/ 09 июля 2020

Есть представление календаря, которое отображается каждый раз при изменении месяца. Когда этот месяц изменяется, делается запрос GET, который получает все резервирования для этого конкретного месяца и года. Каждая дневная ячейка имеет класс ГГГГММДД. Если дата в ответе совпадает с классом ячейки дня, к ячейке дня <div> добавляется <div>. Приведенный ниже метод работает, но есть ли более быстрый способ сделать это? Как показано ниже, каждый ответ проверяется один за другим, а все дневные ячейки одна за другой, что требует немного времени для вычисления.

Обновлено для каждого комментария

getReservations(url)
.then(response => {
    let monthDayCells = document.querySelector("#month-calendar").querySelectorAll(".day-cell");
    response.forEach(reservation => {
        monthDayCells.forEach(dayCell => {
            if (dayCell.classList.contains(reservation.date)) {
                const dayCellItem = document.createElement("DIV");
                dayCellItem.classList = "calendar-event";
                dayCellItem.innerHTML = `<span class="time">${reservation.startTime} - ${reservation.endTime}</span>`;
                dayCell.appendChild(dayCellItem);
            }
        });
    });
})
...