로또 번호를 추첨해주는 기능을 개발해보자!
1부터 45까지 숫자(정수)를 뽑아보자✅
Math.random();
➡ 0이상 1미만 실수float를 반환 (ex.0.9345452)
Math.random() * 45 + 1;
➡ 1이상 46미만 실수
우리는 실수가 아닌 정수를 원하기 때문에
parseInt();
➡ 소수점을 버리고 정수로 변환!
parseInt(Math.random() * 45 + 1);
➡ 1이상 45이하 정수
여러개의 값을 가진 변수처럼 생각하면된다
마지막 값을 추가
<script>
var lotto = [1,2,3,4,5,6];
lotto.push(7);
document.write(lotto);
</script>
// 결과 var lotto = [1,2,3,4,5,6,7]
⬇ 로또번호 6개를 추출하려면 빈 var 값에 6번 push 해주면 된다
<script>
var lotto = [];
lotto.push(parseInt(Math.random() * 45 + 1));
lotto.push(parseInt(Math.random() * 45 + 1));
lotto.push(parseInt(Math.random() * 45 + 1));
lotto.push(parseInt(Math.random() * 45 + 1));
lotto.push(parseInt(Math.random() * 45 + 1));
lotto.push(parseInt(Math.random() * 45 + 1));
document.write(lotto);
</script>
6개가 반복되니 반복문으로 다시 코드를 작성하자.
<script>
var lotto = [];
for (var i = 0; i < 6; i++){
lotto.push(parseInt(Math.random() * 45 + 1));
} //6번 반복!
document.write(lotto);
</script>
하지만 이 경우 중복된 숫자가 들어갈수도 있어서 if문을 통해 중복되는 숫자가 push 되지 못하게 만들어보도록하자.
특정 횟수를 반복하는 if문
중복된 로또값이 있는지 확인하려면 .indexOf()
을 이용하고
-1이 나오면 (중복된게없으면) push 하게끔 해야한다.
<script>
var lotto = [];
for (var i = 0; i < 6; i++){
var num = parseInt(Math.random() * 45 + 1);
if (lotto.indexOf(num) == -1) {
lotto.push(num);
}
}
document.write(lotto);
</script>
이렇게 코드를 쓰면 값이 중복될 경우 lotto=[1,2,3,4,5] 처럼 5개의 값만 나올 수 있기 때문에 특정 조건이 만족될때 까지 반복하는 while을 사용해야한다.
특정 조건이 만족될때까지 계속 반복
로또의 값이 6개가 될때 반복문을 빠져나온다.
<script>
var lotto = [];
while (lotto.length < 6) {
var num = parseInt(Math.random() * 45 + 1);
if (lotto.indexOf(num) == -1) {
lotto.push(num);
}
}
document.write(lotto);
</script>
오름차순 .sort((a,b)=>a-b)
내림차순 .sort((a,b)=>b-a)
<script>
var lotto = [];
while (lotto.length < 6) {
var num = parseInt(Math.random() * 45 + 1);
if (lotto.indexOf(num) == -1) {
lotto.push(num);
}
}
lotto.sort((a,b)=>a-b); //오름차순으로 숫자를 정렬해줘!
document.write(lotto);
</script>