여기서 사용된 reduce라는 함수는 배열의 내장 함수입니다. 이 함수는 배열 안 값을 연산해 하나의 결괏값을 도출해낼 때 사용합니다. 만약 이 함수가 익숙하지 않다면 다음 링크를 참조하세요.

    https://bit.ly/2H0R2Cn

    reduce를 사용하는 다른 예시 코드를 확인해 이 함수를 이해해봅시다.

    const array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    const sum = array.reduce((acc, current) => {
      return acc + current;
    }, 0);

    이 코드는 배열 내부 값의 합을 구합니다. reduce에는 첫 번째 파라미터로 배열의 각 원소를 사용해 특정 값을 연산하는 함수를 넣고, 두 번째 파라미터로 초깃값을 넣습니다. 첫 번째 파라미터에 넣은 함수의 acc는 accumulator를 의미하는데, 이는 누적된 값이라는 뜻입니다. current는 현재 처리 중인 값을 가리킵니다. 이 함수에서 반환한 값은 다음 원소를 처리할 때 acc가 됩니다.

    그럼 작성한 코드를 다시 확인해볼까요?

      const markedDates = logs.reduce((acc, current) => {
      const formattedDate = format(new Date(current.date), 'yyyy-MM-dd');
      acc[formattedDate] = {marked: true};
      return acc;
    }, {});

    reduce 함수에서 사용하는 초깃값은 비어있는 객체입니다. 그리고 각 원소의 날짜를 yyyy-MM-dd 형태로 변환한 후 변환된 값을 객체의 key로 사용해 {marked: true} 값을 지정해줍니다. 이렇게 하면 로그가 작성된 날짜에만 해당 객체 값이 지정되어 로그 작성 날짜가 달력에 표시될 것입니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.