<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 함수의 비교 함수는 2개의 값을 받아서 3가지 경우의 값을 반환하는데 반환되는 값에 따라 2개의 값의 순서가 변경된다.
EX) const winBalls = shuffle.slice(0, 6).sort((a,b) => a - b); //원본을 바꾸는 메서드가 존재하는 경우 대처하는 방법
const bonus = shuffle[6];
a - b 의 경우 오름차순
a + b 의 경우 내림차순
slice의 경우 splice와 거의 동일하게 동작하지만 원본 배열이 유지된다
splice는 시작인덱스, 삭제할 데이터 개수를 넣지만 slice는 시작 인덱스, 끝 인덱스를 쓴다
// slice 함수
// 원본 배열이 유지된다.
// 시작 인덱스 이상부터 끝 인덱스 미만까지 슬라이싱한다.
배열.slice(시작 인덱스, 끝 인덱스);
위와 같이 -를 이용하여 뒤에서 부터 찾아볼 수도 있다
자바스크립트의 charCodeAt() 함수는 문자의 index에 해당하는 유니코드 값을 반환하는 함수입니다. 자바스크립트의 문자열 내의 문자는 왼쪽에서 오른쪽으로 인덱스가 매겨집니다.
//charCodeAt() 함수
문자열.charCodeAt([index])
배열안의 각 문자열 앞자리의 유니코드 순으로 정렬
문자열의 사전적 순서를 따져 음수 혹은 양수를 반환함
// 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만 가지는게 아니라, "음수값"과 "양수값"을 가진다고 생각해주셔야 됩니다.