더북(TheBook)

여기서 사용된 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} 값을 지정해줍니다. 이렇게 하면 로그가 작성된 날짜에만 해당 객체 값이 지정되어 로그 작성 날짜가 달력에 표시될 것입니다.

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