JS 6-1 ~ 6-3

김도훈·2022년 6월 20일
0

숫자 랜덤하게 섞기

<script>
  const candidate = Array(45).fill().map((val, 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 배열에 넣기
  }
</script>

sort와 slice

sort

sort 함수의 비교 함수는 2개의 값을 받아서 3가지 경우의 값을 반환하는데 반환되는 값에 따라 2개의 값의 순서가 변경된다.

  • 입력받은 두 개의 값이 같은 경우 = 반환 값은 0이고 순서 변경 없음
  • 첫 번째 인자 값이 큰 경우 = 반환 값은 1이고 첫번째 인자 값이 두번째 인자 값보다 커서 뒤로 이동
  • 첫번째 인자 값이 작은 경우 = 반환 값은 -1이고 첫번째 인자 값이 적기 때문에 앞으로 이동

EX) const winBalls = shuffle.slice(0, 6).sort((a,b) => a - b); //원본을 바꾸는 메서드가 존재하는 경우 대처하는 방법
const bonus = shuffle[6];
a - b 의 경우 오름차순
a + b 의 경우 내림차순

slice

slice의 경우 splice와 거의 동일하게 동작하지만 원본 배열이 유지된다
splice는 시작인덱스, 삭제할 데이터 개수를 넣지만 slice는 시작 인덱스, 끝 인덱스를 쓴다

// slice 함수
// 원본 배열이 유지된다.
// 시작 인덱스 이상부터 끝 인덱스 미만까지 슬라이싱한다.
배열.slice(시작 인덱스, 끝 인덱스);

위와 같이 -를 이용하여 뒤에서 부터 찾아볼 수도 있다

charCodeAt

자바스크립트의 charCodeAt() 함수는 문자의 index에 해당하는 유니코드 값을 반환하는 함수입니다. 자바스크립트의 문자열 내의 문자는 왼쪽에서 오른쪽으로 인덱스가 매겨집니다.

//charCodeAt() 함수
문자열.charCodeAt([index])

배열안의 각 문자열 앞자리의 유니코드 순으로 정렬

localeCompare

문자열의 사전적 순서를 따져 음수 혹은 양수를 반환함


// a는 c보다 사전적으로 앞에 있으므로 음수의 값을 가집니다.
'a'.localeCompare('c'); // -2 or -1 (아니면 다른 음수값)
// check는 against보다 사전적으로 뒤에 있으므로 양수의 값을 가집니다.
'check'.localeCompare('against'); // 2 or 1 (아니면 다른 양수값)
// a와 a는 사전적으로 같은 위치에 있으므로 0을 가집니다.
'a'.localeCompare('a'); // 0
즉, 정확히 -1이랑 1만 가지는게 아니라, "음수값"과 "양수값"을 가진다고 생각해주셔야 됩니다.

0개의 댓글