Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 생년월일 기반 별자리 찾기: 날짜 객체에서 점성술 기호 구하는 방법

문제 정의

날짜 객체(Date 객체)를 입력으로 받아, 해당 생년월일에 대응하는 별자리(점성술 기호)를 반환하는 JavaScript 함수를 작성해야 합니다.

예제 코드

다음은 이 문제를 해결하는 코드입니다 −

const date = new Date();
// 2021년 4월 2일 기준
const findSign = (date) => {
   const days = [21, 20, 21, 21, 22, 22, 23, 24, 24, 24, 23, 22];
   const signs = ["Aquarius", "Pisces", "Aries", "Taurus", "Gemini", "Cancer", "Leo",    "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn"];
   let month = date.getMonth();
   let day = date.getDate();
   if(month == 0 && day <= 20){
      month = 11;
   }else if(day < days[month]){
      month--;
   };
   return signs[month];
};
console.log(findSign(date));

출력 결과

Aries

이 코드는 현재 날짜를 기준으로 실행되기 때문에, 함수를 실행하는 시점에 따라 출력 결과가 달라질 수 있습니다. 예를 들어 2021년 4월 2일에 실행하면 'Aries'(양자리)가 출력됩니다.

코드 동작 원리

이 함수의 핵심 로직을 단계별로 살펴보겠습니다.

  • days 배열: 각 월(0~11)에서 별자리가 바뀌는 기준 날짜를 저장합니다. 예를 들어 첫 번째 값 21은 1월의 경우 21일부터 물병자리가 시작됨을 의미합니다.
  • signs 배열: 물병자리부터 염소자리까지 12개 별자리 이름을 순서대로 저장합니다.
  • 1월 경계 처리: 1월(month === 0)이면서 날짜가 20일 이하라면, 이전 해 12월의 염소자리(Capricorn)에 해당하므로 month를 11로 변경합니다.
  • 별자리 전환일 판별: 입력된 일(day)이 해당 월의 전환일보다 작으면, 아직 이전 달의 별자리 범위에 속하므로 month를 1 감소시킵니다.

마지막으로 조정된 month 인덱스를 사용해 signs 배열에서 별자리 이름을 반환합니다.

한글 별자리 이름으로 표시하기

반환값을 한글로 표시하고 싶다면 signs 배열만 다음과 같이 한글 이름으로 교체하면 됩니다.

const signs = ["물병자리", "물고기자리", "양자리", "황소자리", "쌍둥이자리", "게자리", "사자자리", "처녀자리", "천칭자리", "전갈자리", "사수자리", "염소자리"];

나머지 로직은 그대로 유지한 채, 같은 방식으로 한글 별자리 이름을 바로 얻을 수 있습니다.