추가과제 1번 Shuffle method 풀이

최영노·2021년 1월 14일
0

1번 문제 (Shuffle method) 는 배열을 입력받고 난 뒤 순서를 랜덤으로 뒤바꿔 새 배열을 출력해주는 무작위 (random) 함수이다.

코드

_.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) 함수 (function) 를 선언한다.

2) arr.slice() 를 통해 (얕은) 복사를 적용시킨 arr 을 arrClonded 에 넣는다. (배열을 복사하기 위해 slice 메소드를 활용하는 것이다)

3) for 구문으로 반복문을 설정한다 (배열의 length 만큼 반복문이 반복된다)

4)
Math.floor = 정수를 반환하는 메소드 (소숫점 X)
Math.random = 랜덤의 난수를 반환하는 메소드

const toldxtoldx 에 랜덤의 숫자값을 설정하는 것이다.
(랜덤의 숫자 (난수) 는 arr 의 길이보다 작은 정수이다)

5) temp 라는 변수를 선언하여 그 속에 arrcloned 를 할당시킨다.

6) fromIdxtoIdx 의 해당 값이 function 을 통해 랜덤으로 변환된다.

7) 위의 과정들이 temp 값으로 된다.

8) 반복문이 적용되어 복사된 값을 리턴시킨다.

적용

이 shuffle 메소드는 우리 일상에서도 활용되는 곳이 바로 떠오를 수 있을정도로 실용적인 메소드란 생각이 들었다.

youtube 나 Melon 랜덤재생, 네이버 사다리뽑기게임 등 순서나 규칙이 정해지지 않은, 무작위로 랜덤 값을 도출할 때 이러한 코드를 활용 할 수 있겠다는 생각이 들었다.

profile
개발자를 꿈꾸는 한 사람

0개의 댓글