LV.1 개발자 생존일지

권도토잠보·2022년 8월 12일
0

超越

목록 보기
10/19
post-thumbnail

서론

1
일단 달력에 대한 데이터를 담는것 자체부터가 잘못되었다.
그러니까 팀장님 말씀처럼 2차원배열로 만들 필요가 없었던 것이다.
2차원 배열에 데이터를 넣고 빼려고하니 정말 답이 없었다...

그래서 결국은
axios고 뭐고 달력부터 다시 손보기로 했다.

2

2차원 배열을 1차원 배열로 만든 후 달력 날짜를 출력하는 반복문을 만지작거렸더니
원하는 달력의 모습과 비슷하게 나오긴했지만... 빈 공간 음 그러니까
31일 다음 칸 부터 다음달(9월)의 날짜들이 출력되어야 했다

3
근데 어림도 없었다.

본론

4
좋은 방법이 많이 있을 것이다.
라이브러리를 사용해서 해결 할 수도 있고...
반복문에 조건문을 달아서 해결 할 수도 있을거라 생각한다.

5
근데 나의 뇌지컬로는 그냥
<이전달의 날짜가 출력되는 div 반복문> + <현재달의 날짜가 출력되는 div 반복문> + <다음달의 날짜가 출력되는 div 반복문>

이게 최선이었다 ㅠㅠ

    initCalendar: function (thisMonth) {
      let startDay = new Date(this.currentYear, this.currentMonth - 1, 0);
      let prevDate = startDay.getDate();
      let prevDay = startDay.getDay();
      // 이번 달의 마지막날 날짜와 요일 구하기
      let endDay = new Date(this.currentYear, this.currentMonth, 0);
      let nextDate = endDay.getDate();
      let nextDay = endDay.getDay();
      /* ----------------------------------------------------------------------------- */
      this.currentCalendarMatrix = [];
      this.prevCalendarMatrix = [];
      this.nextCalendarMatrix = [];
      this.getLastday = new Date(new Date().getFullYear(), this.currentMonth, 0).getDate();
      let currentDays = 0;
      let prevDays = 0;
      let nextDays = 0;
      let currentCalendarObj;
      let prevCalendarObj;
      let nextCalendarObj;

      for (let i = prevDate - prevDay + 1; i <= prevDate; i++) {
        prevDays = i;
        prevCalendarObj = { day: prevDays };
        this.prevCalendarMatrix.push(prevCalendarObj);
      }
      for (let i = 0; i < this.getLastday; i++) {
        currentDays++;
        currentCalendarObj = { year: this.currentYear, month: this.currentMonth, day: currentDays, memo: this.memoData };
        this.currentCalendarMatrix.push(currentCalendarObj);
      }

      for (let i = 1; i <= (7 - nextDay == 7 ? 0 : 7 - nextDay); i++) {
        nextDays++;
        nextCalendarObj = { day: nextDays };
        this.nextCalendarMatrix.push(nextCalendarObj);
      }
      this.prevCalendarMatrix;
      this.currentCalendarMatrix;
      this.nextCalendarMatrix;
    },

6
그 결과 원하는 달력을 만들 수 있었다

결론

7
사실 진짜 구현할 때 처음부터 끝까지 로직을 만들어서 사용하는 사람은 없을 뿐 더러
팀장님도 그런건 너무 비효율적이라고 말씀하셨다.

8
근데 그렇다고 해서 지난날의 나처럼 라이브러리 소스코드 확인도 안하고 그냥
사용법만 검색하여 주구장창 쓰게되면
저런 간단한(?)로직도 제대로 짜지못하고 힘겨워한다

9
이번 과제를 내준데는 이런 큰 이유가 있지 않을까..싶지만

10
암튼 난 멍청하다는 것을 다시 한 번 깨닫는 한 주였다.

뭘봐.. 뭘보냐고 ㅠㅠ


Sae Eleisa Tera Vi

profile
낯선이여, 당도하였으면 당도높은 복숭아

0개의 댓글