[기수 이동] TIL 3일차

MINGYOUNG KIM·2021년 2월 24일
0

1. Underbar shuffle 메소드 레퍼런스 설명하기

1) 다음의 과제 레퍼런스를 한 줄씩(line by line) 해설하고,
2) 위의 설명을 기반으로 하여 이 메소드의 작동 원리 설명한 뒤,
3) 어떤 경우에 사용될 수 있는지에 대한 예시를 들어보기

_.shuffle = function (arr) {
let arrCloned = arr.slice();
for (let fromIdx = 0; fromIdx < arr.length; fromIdx++) {
const toIdx = Math.floor(Math.random(- 문자열로만 구성된 배열을 입력받은 경우, 문제가 더 쉬워진다는 것에 주목합시다.) * arr.length);
let temp = arrCloned[fromIdx];
arrCloned[fromIdx] = arrCloned[toIdx];
arrCloned[toIdx] = temp;
}
return arrCloned;
};

1) 한 줄씩(line by line) 코드 해석하기
(1) _.shuffle은 배열(arr)를 인자로 받는 함수이다.
(2) 이 때, 새로운 local 변수 arrCloned를 선언하고, 이 변수에 배열 메소드 slice()를 사용하여
함수의 인자 배열(arr)을 그대로 복사한 값을 할당한 뒤,
(3) for구문을 이용하여 다음의 코드를 반복한다
(4) for 구문 안에서 선언된 변수 toIdx는 0에서 1사이의 난수를 생성하는 Math.random과
arr의 길이를 곱한 값을 Math.floor함수의 인자로 사용하는데 이 때, Math.floor는
소수점 1번째 자리를 버림한 뒤 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 정수를 반환한다.
즉, 랜덤으로 정수인 난수를 생성한다.
(5) 변수 temp는 for문의 초기화, 조건문, 증감문에 따라 변화하는 arrCloned의 인덱스에 해당하는 값을
할당 받고, (e.x. let temp = arrCloned[2];)
(6) arrCloned의 fromIdx는 arrCloned의 toIdx는그대로 복사한 arrCloned의 랜덤 인덱스에
해당하는 값을 할당 받으며 (e.x. arrCloned[2] = arrCloned[1];)
(7) temp는 arrCloned이다. (e.x. arrCloned[1] = temp;)

2) 따라서, _.shuffle은 function이 인자로 받는 배열(arr)을 무작위로 섞어주는 함수이다.

3) 이 때, 자료를 랜덤으로 줄 세우는 데에 '순서'라는 개념이 필요하므로 배열 타입의 자료형에 사용 가능하다.

profile
개발자가 되기 위해 준비 중인 사람

0개의 댓글