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

У меня такой код
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... книга старовата, но все ещё хороша(судя по отзывам)думаю подымет твой скилл, люби читать!)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы