Underbar shuffle 메소드
1. 아래 코드를 살펴보자
_.shuffle = function (arr) {
//_.shuffle 이라는 변수는 arr를 매개변수로 가지는 함수로 선언 되었다.
let arrCloned = arr.slice();
// arr의 복사본이 arrCloned 에 할당 되었다.
for (let fromIdx = 0; fromIdx < arr.length; fromIdx++) {
// fromIdx 라는 변수는 0으로 선언 되었고 arr의 길이만큼 반복되며 반복될때마다 1씩 증가한다.
const toIdx = Math.floor(Math.random() * arr.length);
// toIdx 라는 변수는 arr 길이 곱하기 0과 1사이의 랜덤 난수를 곱한 값의 내림값을 한 정수이다. (0과 1사이의 난수는 반복문이 실행 될때마다 새로 생성된다.)
let temp = arrCloned[fromIdx];
//temp라는 변수는 arrClone의 fromIdx 번째의 것이다.
arrCloned[fromIdx] = arrCloned[toIdx];
// arrClone의 fromIdx 번째에 toIdx번째가 할당 되었다.
arrCloned[toIdx] = temp;
//toIdx번째 값에 temp가 할당 되었다.
}
return arrCloned;
// 마지막으로 arrCloned 출력
};
2. 무슨 일을 하는 함수일까?
배열의 객체가 0번째부터 배열의 길이보다 작을떄까지 순회할때마다 temp라는 변수에 담긴다. 그 후 배열의 원래 자리에 random으로 생성한 배열의 객체로 바꿔 준 후, 바뀐 배열에 원래의 배열의 객체를 담아준다.
3. 어떤 상황에 사용할 수 있을까?
순서를 랜덤으로 정할때 사용할 수 있다.(줄세우기!) 또는 로또 번호 뽑기.