2021.01.13(수) TIL

HJ's Coding Journey·2021년 1월 13일
0

추가 과제(1) - Underbar shuffle 메소드 레퍼런스 설명

<레퍼런스 코드>

_.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;
};

<코드 분석>

_.shuffle = function (arr) {
// shuffle 메소드를 이용해 arr 인자 안에 들어갈 요소들을 randomize 시킬 수 있다.

let arrCloned = arr.slice();
// arrCloned 라는 변수를 생성 후 arr.slice 메소드를 할당한다.
// arr.slice() 를 이용해 원하는만큼 요소들을 가져와 배열을 새로 만들 수 있다.

for (let fromIdx = 0; fromIdx < arr.length; fromIdx++) {
// index 를 0부터 시작해서 전체배열의 총 길이수까지 1증가하며 반복시켜준다.

const toIdx = Math.floor(Math.random() * arr.length);
// Math.random 메소드를 사용해서0부터 반복문으로 돌린 arr.length 길이의 수까지 가져온다.
// 그리고 주어진 값을 Math.floor 메소드로 담아서 가져온 수 중에 가장 큰 수를 반환한다.

let temp = arrCloned[fromIdx];
// 새로운 temp 라는 변수속에 위에서 복사된 값을 할당한다.

arrCloned[fromIdx] = arrCloned[toIdx];
// fromIdx 와 toIdx 에 입력된 값이 shuffle 메소드의 효과로 인해 randomize 된다.

arrCloned[toIdx] = temp;
}
// 정리를 해주기 위해 이 모든 과정은 temp 값이 된다.

return arrCloned;
};
// 위 과정대로 반복문이 돌고나면 복사된 결과값을 리턴한다.

<분석 결과>

어떠한 배열을 이용해 그 안의 요소들을 randomize 시킨 후 나온 새로운 요소들로 완전히 새 배열을 생성할때 사용하는 코드인듯하다. 예를들어 실상황에 코드를 적용한다면 네이버의 '사다리 타기' 및 게임에서 '랜덤뽑기' 와 비슷한 기능을 구현할때 이런 코드가 연관성이 있지 않을까 추측을 해본다.

<느낀점>

처음 풀기 시작했을때는 전혀 바로 와닿지 않았다. 사실 지금도 헷갈리는 부분들이 있어 아직도 공부중이다. 하지만 문제를 한 덩어리로 보기보다 코드를 한줄씩 각각 나눠서 따로따로 보니깐 처음보다는 조금 더 잘 이해가 되는듯하다. 그렇다고 문제를 완벽히 마스터한건 아니다. 문제를 풀면서 아직 배울게 많다는걸 느꼈다. 앞으로 더 분발하도록 노력하겠다!

profile
Improving Everyday

0개의 댓글