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. 어떤 상황에 사용할 수 있을까?

순서를 랜덤으로 정할때 사용할 수 있다.(줄세우기!) 또는 로또 번호 뽑기.

Updated: