해결된 질문
작성
·
227
·
수정됨
2
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
안녕하세요! 네네 그런 이슈가 있어서 영상을 덧붙였던건데, 중간에 영상을 멈추고 디버깅을 하셨다면 모르셨겠네요 🥲 영상에 자막 같은 걸 좀 한 타이밍 일찍 넣거나 해보겠습니다. 피드백 감사해요!