ALGORITHM

Writing
  • settings_backup_restore
  • bug_report

배열의 원소를 무작위로 섞기

배열을 이용하여 데이터를 사용하는 경우에 데이터들이 무작위로 섞여 예측하지 못하는 값으로 사용해야 할 경우가 있다. 아직 배열의 원소를 무작위로 섞어주는 메소드는 없으니 직접 로직을 구현해야 한다.

var array = ["Apple", "Banana", "Blueberry", "Cherry"];
console.log(shuffle(array));

function shuffle(array) {
  var ridx, tmp;
  for(let i = array.length - 1; i > 0; i--) {
    // 추출할 index를 난수로 생성
    ridx = Math.floor(Math.random() * i);
    // 현재 index의 원소를 임시 저장
    tmp = array[i];
    // 난수로 생성된 index를 갖는 원소를 현재 index를 갖는 원소의 데이터로 변경
    array[i] = array[ridx];
    // 난수로 생성된 index에 해당하는 원소를 현재 index의 원소로 변경
    array[ridx] = tmp;
  }
  
  return array;
}