여기서 사용된 reduce라는 함수는 배열의 내장 함수입니다. 이 함수는 배열 안 값을 연산해 하나의 결괏값을 도출해낼 때 사용합니다. 만약 이 함수가 익숙하지 않다면 다음 링크를 참조하세요.
reduce를 사용하는 다른 예시 코드를 확인해 이 함수를 이해해봅시다.
const array [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; const sum array. ((acc, current) => { return acc current; }, 0);
이 코드는 배열 내부 값의 합을 구합니다. reduce에는 첫 번째 파라미터로 배열의 각 원소를 사용해 특정 값을 연산하는 함수를 넣고, 두 번째 파라미터로 초깃값을 넣습니다. 첫 번째 파라미터에 넣은 함수의 acc는 accumulator를 의미하는데, 이는 누적된 값이라는 뜻입니다. current는 현재 처리 중인 값을 가리킵니다. 이 함수에서 반환한 값은 다음 원소를 처리할 때 acc가 됩니다.
그럼 작성한 코드를 다시 확인해볼까요?
const markedDates = logs. ((acc, current) => { const formattedDate = (new Date(current.date), 'yyyy-MM-dd'); acc[formattedDate] = {marked: true}; return acc; }, {});
이 reduce 함수에서 사용하는 초깃값은 비어있는 객체입니다. 그리고 각 원소의 날짜를 yyyy-MM-dd 형태로 변환한 후 변환된 값을 객체의 key로 사용해 {marked: true} 값을 지정해줍니다. 이렇게 하면 로그가 작성된 날짜에만 해당 객체 값이 지정되어 로그 작성 날짜가 달력에 표시될 것입니다.