• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    해결됨

filter test 마지막 문제 결과값이 이상합니다.

23.12.11 17:56 작성 23.12.12 09:49 수정 조회수 154

1

04. Array 메소드 - (2 of 7) Filter

====================================

filter의 마지막 테스트 중 원하는 결과값이 나오지 않습니다.

강사님의 코드와 동일하게 작성하면

const tweetsPostedAfter10pm = posts.filter((post) => {
      const frenchTimestamp = new Date(post.meta.created_at).toLocaleString('fr-FR');
      return new Date(frenchTimestamp).getHours() >= 22;
    });

//결과
// - Expected   "5"
// + Received   "1"

이렇게 나옵니다.

저는 한국에 있으니 지역이 문제인 것 같아서 한국으로 설정하고 돌리면

    const tweetsPostedAfter10pm = posts.filter((post) => {
      const koreanTimestamp = new Date(post.meta.created_at).toLocaleString('ko-KR');
      return new Date(koreanTimestamp).getHours() >= 22;
    });

//결과
//  - Expected   "5"
//  + Received   "0"

위처럼 나옵니다..

 

콘솔로 데이터를 찍어보니

   const tweetsPostedAfter10pm = posts.filter((post) => {
      const frenchTimestamp = new Date(post.meta.created_at).toLocaleString('fr-FR');
      console.log(new Date(frenchTimestamp).getHours());
      return new Date(frenchTimestamp).getHours() >= 22;
    });

//console
1
1
6
NaN
NaN
NaN
8
7
19
18
NaN
NaN
...

참고로 ko-KR은 모두 NaN으로 나옵니다.

동일한 코드인데 왜 저는 이렇게 나오는 걸까요?? 오타라도 있는걸까요..?

 

+ 다른 코드로 해봤는데 9개가 나옵니다;

   const tweetsPostedAfter10pm = posts.filter((post) => {
        const date = new Date(post.meta.created_at);

        // UTC 시간을 한국 시간으로 변환
        const koreanTime = new Intl.DateTimeFormat('ko-KR', {
            timeZone: 'Asia/Seoul',
            hour: '2-digit',
            hour12: false
        }).format(date);

        // '시' 부분만 추출
        const koreanHour = koreanTime.split('시')[0];
        const toNumber = koreanHour * 1;

        console.log(toNumber)
        return koreanHour >= 22;;
    });

//결과
//  - Expected   "5"
//  + Received   "9"

 

++ 영상을 끝까지 보고나니까 오류가 있는게 맞는 것 같네요!? 저처럼 혼자 삽질하고 있을 학생들을 위해 남겨두겠습니다!

답변 1

답변을 작성해보세요.

0

안녕하세요! 네네 그런 이슈가 있어서 영상을 덧붙였던건데, 중간에 영상을 멈추고 디버깅을 하셨다면 모르셨겠네요 🥲 영상에 자막 같은 걸 좀 한 타이밍 일찍 넣거나 해보겠습니다. 피드백 감사해요!