📝 TIL

[TIL] JS Set, 로또 번호 추첨기, Map

오늘 ONEUL 2022. 4. 15. 22:56

✍ Today I Learned

  • [생일, 디데이 계산기]
    • getTime() 메서드는 1970년 1월 0시 0분 0초부터 현재까지의 시간을 밀리초 단위로 환산한 값을 반환한다.
    • Date() 객체를 할당한 변수끼리는 밀리 초로 연산이 가능하다.
    • 기간을 출력할 때에는 주로 밀리초 단위를 사용하여 연산한다.
    • 날짜 관련 데이터는 moment.js 또는 FullCalendar 를 활용하는 것도 좋은 방법!
  • Set 객체에서 entries() 메서드로 값을 출력하려면 반복문을 중첩으로 사용해야 한다.
  • 객체도 연관 배열이라고 볼 수 있다.
  • [로또 번호 추첨기 ver. 1 (Set을 사용하기)]
    • Set객체는 중복을 허용하지 않기 때문에 새로운 Set의 size가 6이 될 때까지 while문을 실행한다.
    • 빈 배열을 만들어서 forEach() 메서드로 Set 객체의 값들을 빈 배열에 넣어준다.
    • 배열을 sort() 메서드로 정렬한 뒤 출력!
    • for문을 이용할 때에는 증감식을 i 대신 Set객체의 size가 6이 될 때까지로 설정한다.
  • [로또 번호 추첨기 ver. 2 (Set을 사용하지 않기)]
    • 빈 배열에 랜덤 숫자를 push() 하는 시점과 중복 숫자를 검사하는 시점이 좀 헷갈렸는데 includes() 메서드를 이용하여 간단히 해결하였다.
    • 랜덤 숫자를 먼저 변수에 할당하고 그 변수가 배열 안에 없으면 배열에 push()
    • 배열의 length가 6이 될 때까지 반복!
  • 로또 번호 추첨을 배열 순환 메서드를 사용하지 않고 구현하고 싶어서 엄청난 삽질을 해보았지만 결과적으로 구현하지 못했다. 제어문의 흐름을 다시 공부해야겠다.
  • includes() 메서드를 대체할만한 메서드는 indexOf() 메서드, 찾는 값이 없으면 -1을 반환한다.
  • 반복하는 메서드들을 잘 활용하면 코드를 효율적으로 줄일 수 있다.