TIL 16 - Javascript Replit 02

crystalee·2021년 7월 14일
1

repl.it

목록 보기
2/2
post-thumbnail

📖 String <-> Number 변환

🙋‍♀️ Number 함수를 사용해서 String형에서 Number형으로 전환

var birthYearInput = "2000";
console.log(typeof birthYearInput);
 
var numberBirthYear = Number(birthYearInput);
console.log(typeof numberBirthYear);

🧐 parseInt, parseFloat

parseInt("1.901");
parseFloat("1.901");
Number("1.901");
parseInt("200") + 1;

🤔 Number형에서 String형으로 변환

예제)

var numberAsNumber = 1234;
var numberAsString = numberAsNumber.toString();
console.log(numberAsNumber, typeof numberAsNumber);
console.log(numberAsString, typeof numberAsString);

1. +연산의 특성을 활용하여 아래와 같이 변환

var numberAsNumber = 1234; 
var numberAsString = numberAsNumber.toString();
 
console.log(numberAsNumber, typeof numberAsNumber);
console.log(numberAsString, typeof numberAsString);

2. -연산의 특성을 활용하여 아래와 같이 변환

var numberAsNumber = 1234; 
var numberAsString = 1234 + "";
 
console.log(numberAsNumber, typeof numberAsNumber);
console.log(numberAsString, typeof numberAsString);

Assignment

nationalPensionRemainingYearCount 함수를 구현해주세요.
우리나라는 국민연금을 만 65세 부터 받을 수 있습니다.
nationalPensionRemainingYearCount 는 age_string 이라는 input을 받습니다.
age_string 은 나이 값인데 string형 값으로 되어 있습니다.
주어진 나이부터 몇년이 지나야 국민연금을 받을수 있는지 리턴 해주세요.
리턴 값은 다음과 같습니다.
"앞으로 20년 남으셨습니다"
예를 들어, age_string 값이 다음과 같다면:
"35"
리턴 값은 다음과 같아야 합니다.
"앞으로 30년 남으셨습니다"

✍️ 구현한 함수

function nationalPensionRemainingYearCount(age_string) {
  
let age = Number(age_string);
let year = 65 - age;
let result = "앞으로 " + year + "년 남으셨습니다";

return result;

}

날짜와 시간 Assignment

미국을 비롯해 전세계 대부분의 나라들이 생일을 기준으로 나이를 계산 합니다. 쉽게 말해 미국은 태어나자마자 0살이고 생일을 지나야 비로소 한 살이 됩니다. 반면에 한국은 태어나자마자 1살이고 연도가 바뀔 때마다 한 살씩 먹습니다.
예를 들어 미국에서는 1995년 9월 12일에 태어났으면 1995년 9월 12일에는 0살이고1996년 9월 12일이 되야 1살이 됩니다. 그에 비해 한국에서는 1995년 9월 12일에 태어나자마자 1살이고 1996년 1월 1일에 2살이 됩니다.
미국이나 다른 나라가 사용하는 나이 계산법은 우리나라에서는 만 나이 라고 하죠.

  • 앞서 말한 만으로 계산한 나이를 구하는 함수인 getWesternAge 함수를 구현해 봅시다.
    이 함수는 birthday 라는 인자를 받습니다.
    이 birthday 는 Date 객체 입니다. birthday 라는 인자를 넣었을 때, 현재를 기준으로 만으로 계산한 나이를 리턴 해주세요.
    birthday 는 string이 아닌 Date 객체라는 걸 명심하세요 :)
    예를 들어, 오늘이 2020년 7월 21일이고, birthday 값이 다음과 같다면:

    1990-03-21T00:45:06.562Z

    리턴 값은 30 이 되어야 합니다.

    ✍️ 구현한 함수


 function getWesternAge(birthday){
  let birth = new Date(birthday);
  let birthYear = birth.getFullYear();
  
  let now = new Date();
  let nowYear = now.getFullYear();
  
  let age = nowYear - birthYear;
  
  let birthMonth = birth.getMonth();
  let nowMonth = now.getMonth();
  
  let birthDate = birth.getDate();
  let nowDate = now.getDate();
  
  if (birthMonth < nowMonth) {
    return age; 
  } else if (birthMonth > nowMonth) {
    return age -1;
  } else {
    if (birthDate < nowDate) {
      return age;
    } else {
      return age -1;
    }
  }
  return age;
}

❗️마치며

string -> number의 replit 과제는 기분 좋게 풀었고 백쿼트를 사용해 result 값을 구현해 runjs에서는 구동이 되었지만 테스트에서는 계속 통과하지 못해 틀린 부분 고민하느라 굉장히 오래 걸렸다. 문제를 자세히 보는 버릇을 들여야 할 것 같다. 밑에 만나이는 굉장히 머리를 많이 쓴 문제였다. 우선 익숙하지 않은 만나이를 따지느라 복잡했다. 🥲
여전히 구문을 읽고 코드로 나타내는 일이 너무 어렵다.

profile
코린이 성장일기

0개의 댓글