본문 바로가기
개발일지/Web Development

[JavaScript] 로또추첨기 만들기

by jungwonyu 2022. 6. 8.
728x90
로또 추첨기
→ 1 ~ 45까지의 숫자 중 공 7개를 뽑아 화면에 표시

📌 순서도

1. 1 ~ 45까지의 숫자를 섞는다.

2. 공 7개를 뽑는데, 마지막 공은 보너스 공이 된다.

3. 1초마다 공을 하나씩 화면에 표시한다. (공이 7개이므로 총 7초 동안 보여준다.)


📍 1에서 45까지의 숫자를 추첨하는 코드

: 숫자를 뽑은 뒤 candidate 변수에 저장

 const candidate = Array(45).fill().map((v, i) => i + 1);

📍 sort

: sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환

const months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
console.log(months);
// expected output: Array ["Dec", "Feb", "Jan", "March"]

const array1 = [1, 30, 4, 21, 100000];
array1.sort();
console.log(array1);
// expected output: Array [1, 100000, 21, 30, 4]

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

 

Array.prototype.sort() - JavaScript | MDN

sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.

developer.mozilla.org

* 구문

arr.sort([compareFunction])

 

compareFunction

: 정렬 순서를 정의하는 함수 / 생략하면 배열은 각 요소의 문자열 변환에 따라 각 문자의 유니 코드 코드 포인트 값에 따라 정렬

 

compareFunction(a, b)에서 a와 b가 비교되는 두 요소라면, 

✓ a - b가 0보다 크면 → b, a 순서로 정렬

✓ a - b가 0보다 작으면 → a, b 순서로 정렬

✓ a - b가 0이면 → 순서 유지

 

eg/ [1, 3, 16, 25, 32]라는 배열이 있고, 32와 16을 뽑았을 때?

a가 32 b가 16이 되고 32-16=16으로 0보다 크므로 b(16), a(32) 순서로 정렬

=> 뽑을 수 있는 모든 쌍에 compareFunction을 적용하면 배열의 값이 오름차순으로 정렬됨

 

const winBalls = shuffle.slice(0, 6).sort((a, b) => a - b); // sort 정렬

https://github.com/jungwonyu/js-prac/tree/main/lotto

 

GitHub - jungwonyu/js-prac: 자바스크립트 연습

자바스크립트 연습. Contribute to jungwonyu/js-prac development by creating an account on GitHub.

github.com