자바스크립트 math.random을 배운 김에 로또 번호 생성기를 만들어 보고 싶어짐
math.random은 귀찮으니 다음에 작성
MDN 설명 =>
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Set
역시나 설명이 어렵다
set은 array랑 비슷한데 중요한거만 이야기 하자면
const arr = [1, 5, 3, 8, 5, 3]
이런 배열이 있다고 했을 때
const set = new Set(arr)
console.log(set)
해당 배열을 Set으로 변환 시키면
중복되는 요소를 제거하고 저렇게 만들어 준다.
array 랑은 다르게 배열의 길이가 length가 아닌 size로 나타낸다.
(size 프로퍼티는 getter 함수만 존재하는 접근자 프로퍼티라서 size를 조작해서 개수를 바꾸려는 시도는 무시 된다고 한다)
그 외에 많이 쓰이는 메소드는
set.add(1).add(2);
console.log(set); // Set(2) {1, 2}
set.clear();
console.log(set); // Set(0) {}
const set = new Set([1, 2, 3]);
set.delete(2);
console.log(set); //Set(2) {1, 3}
해당 요소가 있으면 => 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을 사용하여 로또 번호 생성기를 만들어 봤다
잘 작동하는 모습이다.