로또 번호 생성기 만들기 - JavaScript ( set )

solda-blue·2023년 2월 12일
0

심심풀이

목록 보기
1/1

자바스크립트 math.random을 배운 김에 로또 번호 생성기를 만들어 보고 싶어짐

math.random은 귀찮으니 다음에 작성

MDN 설명 =>
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Set

역시나 설명이 어렵다
set은 array랑 비슷한데 중요한거만 이야기 하자면

  1. 배열 내에서 같은 값을 하나만 가진다 (중복이 없다는 말)
  2. index로 요소에 접근이 불가하다
const arr = [1, 5, 3, 8, 5, 3]

이런 배열이 있다고 했을 때

const set = new Set(arr)
console.log(set)

해당 배열을 Set으로 변환 시키면

중복되는 요소를 제거하고 저렇게 만들어 준다.

array 랑은 다르게 배열의 길이가 length가 아닌 size로 나타낸다.
(size 프로퍼티는 getter 함수만 존재하는 접근자 프로퍼티라서 size를 조작해서 개수를 바꾸려는 시도는 무시 된다고 한다)

그 외에 많이 쓰이는 메소드는

Set.prototype.add(value) => 요소 추가하기

set.add(1).add(2);
console.log(set); // Set(2) {1, 2}

Set.prototype.clear() => 요소 다 지우기

set.clear();
console.log(set); // Set(0) {}

Set.prototype.delete(value) => 요소 지우기

const set = new Set([1, 2, 3]);
set.delete(2);
console.log(set); //Set(2) {1, 3}

Set.prototype.has(value) => 요소 찾기

해당 요소가 있으면 => true, 없으면 => false;

그 외는 다음에 알아보자

그래서 로또 번호 생성기는?

        function handleLotto () {

            // 새로운 set 객체 생성
            const set = new Set();
            
            // for 문으로 작성하면 6번만 돌고 그냥 중복만 제거함
            // while로 길이가 6이 되기 전까지 돌린다
            while ( set.size < 6) {
                let num = Math.floor(Math.random() * 45)+ 1;
                set.add(" " + num);
            }
            console.log(set);

            // 정렬을 위해 다시 배열로 변경
            const lotto = Array.from(set);

            // 오름차순 정렬
            lotto.sort(function compare(a, b) {
                return a - b;
            });

            content.innerHTML = lotto;
        };        

일반 배열로 만드려고 하니까 중복 문제 처리하기 까다로워서 Set을 사용하여 로또 번호 생성기를 만들어 봤다

잘 작동하는 모습이다.

0개의 댓글