Как можно сократить код?

У меня такой код
getDate() {
                let calendar = new calendarDate(this.year, this.month);
                let dataCalendar = calendar.getCalendarWeek();//Получаем дни в неделях
                let dateMonthCalendar = null;
                let arrRes = [];
//Выборка по имеющим событиям в расписании
                for (let i = 0; i < this.shedules.length; i++) {
                    let shedule = this.shedules[i];
                    let dateStart = moment(shedule.start);
                    let dateEnd = moment(shedule.end);
                    let date = dateStart.date();
// Сверяем событие с датой в неделях
                    for (let n = 0; n < dataCalendar.length; n++) {
                        for (let key in dataCalendar[n]) {
                            arrRes[dateStart.date()] = arrRes[dateStart.date()] ? arrRes[dateStart.date()] : [];
//Если дата событие и дата месяца совпали, то мы добавляем в массив
                            if(dataCalendar[n][key].date === parseInt(dateStart.date())) {
                                dateMonthCalendar = dataCalendar[n][parseInt(key)];
                                arrRes[dateStart.date()].push(`${dateStart.format("HH:mm")}-${dateEnd.format("HH-mm")}`);
                            }
                        }
                    }
                    dateMonthCalendar.shedule = arrRes[date];//Перемещаем весь массив дня в определенный день\
                }

                console.log(dataCalendar);
                return dataCalendar;
            }

Массив событии идет
[
  {
    "title": "test",
    "start": "2018-12-10 08:00:00",
    "end": "2018-12-10 16:00:00"
  },
  {
    "title": "another test",
    "start": "2018-12-10 16:00:00",
    "end": "2018-12-10 22:00:00"
  },
  {
    "title": "another test",
    "start": "2018-12-11 16:00:00",
    "end": "2018-12-11 22:00:00"
  }
]

Массив месяца приходит
[
1: {1: {date: 1, today: true}, 2: {date: 2, today: false}, 3: {date: 3, today: false}, 4: {date: 4, today: false}, 5: {date: 5, today: false}, 6: {date: 6, today: false},7: {date: 7, today: false}},
2: {8: {date: 8, today: false}, ....},
....
]

Весь пример можно посмотреть тут https://codesandbox.io/s/pyvjxxnnvj в файле /src/views/Shedule.vue
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
Nickname_45
@Nickname_45
Талантливый школьник, что лезет в геймдев.
JavaScript. Оптимизация производительности
www.ozon.ru/context/detail/id/18421547/?from=share... книга старовата, но все ещё хороша(судя по отзывам)думаю подымет твой скилл, люби читать!)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы