6,7강 강의 요약

Adrian·2022년 5월 9일
0

▶️ 피셔-에이츠 셔플 알고리즘

    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()

  setTimeout(() => 콜백함수, ms);

setTimeout 메서드는 콜백함수를 ms 뒤에 처리하는 함수로, 이를 사용하면 우리 생각대로 아래에 있는 함수들이 기다렸다가 순서대로 실행되지 않고, 먼저 실행되는 것을 알 수 있다. (비동기 처리)


▶️ clearInterval, clearTimeout()

	let 아이디 = setInterval(콜백함수, ms);
    clearInterval(아이디);
    let 아이디 = setTimeout(콜백함수, ms);
    clearTimeout(아이디);

setInterval과 setTimeout 함수는 각각 clearInterval과 clearTimeout 함수로 취소할 수 있다. 다만, clearTimeout은 setTimeout에 지정한 함수가 아직 실행되지 않았을 때만 취소할 수 있다.


▶️ arr.includes()

	diff === '바나나' || diff === '사과' || diff === '오렌지'
// or
	['바나나', '사과', '오렌지'].includes(diff)

||을 사용한 코드는 배열의 includes매서드로 반복을 줄일 수 있다.


▶️ removeEventListener()

  function 함수() {}
  태그.addEventListener('이벤트', 함수);
  태그.removeEventListener('이벤트', 함수);

addEventListener로 연결한 함수를 removeEventListener로 제거할 수 있다. 단, 이때는 연결할 때의 함수와 제거할 때의 함수가 같아야 한다.


profile
관조, 사유, 끈기

0개의 댓글