const candidate = Array(45).fill().map((v, i) => i + 1);
const shuffle = [];
while (candidate.length > 0) {
const random = Math.floor(Math.random() * candidate.length); // 무작위 인덱스 뽑기
const spliceArray = candidate.splice(random, 1); // 뽑은 값은 배열에 들어 있음
const value = spliceArray[0]; // 배열에 들어 있는 값을 꺼내어
shuffle.push(value); // shuffle 배열에 넣기
}
console.log(shuffle);
숫자를 랜덤하게 뽑을때 사용하는 알고리즘.로또 추첨말고도 숫자야구나 카드뒤집기같은 랜덤요소를 구현할때 사용한다.
const winBalls = shuffle.slice(0, 6).sort((a, b) => a - b);//오름차순
const winBalls = shuffle.slice(0, 6).sort((a, b) => b - a);//내림차순
sort메서드에 내장된 함수로, 배열의 요소를 순서대로 정렬하기 위해 사용한다.
setTimeout(() => 콜백함수, ms);
setTimeout 메서드는 콜백함수를 ms 뒤에 처리하는 함수로, 이를 사용하면 우리 생각대로 아래에 있는 함수들이 기다렸다가 순서대로 실행되지 않고, 먼저 실행되는 것을 알 수 있다. (비동기 처리)
let 아이디 = setInterval(콜백함수, ms);
clearInterval(아이디);
let 아이디 = setTimeout(콜백함수, ms);
clearTimeout(아이디);
setInterval과 setTimeout 함수는 각각 clearInterval과 clearTimeout 함수로 취소할 수 있다. 다만, clearTimeout은 setTimeout에 지정한 함수가 아직 실행되지 않았을 때만 취소할 수 있다.
diff === '바나나' || diff === '사과' || diff === '오렌지'
// or
['바나나', '사과', '오렌지'].includes(diff)
||을 사용한 코드는 배열의 includes매서드로 반복을 줄일 수 있다.
function 함수() {}
태그.addEventListener('이벤트', 함수);
태그.removeEventListener('이벤트', 함수);
addEventListener로 연결한 함수를 removeEventListener로 제거할 수 있다. 단, 이때는 연결할 때의 함수와 제거할 때의 함수가 같아야 한다.