자바스크립트 배열의 요소를 무작위로 섞기

자바스크립트에서 배열의 요소를 무작위로 섞는 것은 많은 애플리케이션에서 유용한 작업입니다. 예를 들면, 퀴즈 게임에서 문제의 순서를 바꾸거나, 카드 게임에서 카드를 섞는 등 다양한 상황에서 활용할 수 있습니다.

자바스크립트에서 배열을 무작위로 섞는 방법은 여러 가지가 있지만, 이번 글에서는 Fisher-Yates 알고리즘을 사용하여 배열을 섞어보도록 하겠습니다.

Fisher-Yates 알고리즘으로 배열 섞기

function shuffleArray(array) {
  for (let i = array.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [array[i], array[j]] = [array[j], array[i]];
  }
  return array;
}

// 예시 배열
const colors = ['빨강', '파랑', '노랑', '초록', '주황'];

// 배열 섞기
const shuffledColors = shuffleArray(colors);

console.log(shuffledColors);

위의 코드는 Fisher-Yates 알고리즘을 구현한 shuffleArray 함수를 정의하고, 예시로 주어진 colors 배열을 섞는 방법을 보여줍니다. shuffleArray 함수는 주어진 배열을 순차적으로 탐색하면서 현재 인덱스와 그 이전 인덱스 사이에 있는 값을 무작위로 골라서 서로 교환해주는 과정을 반복합니다. 이렇게 하면 배열이 무작위로 섞이게 됩니다.

shuffleArray 함수를 호출하면 원래 배열(colors)의 요소들이 무작위로 섞인 새로운 배열(shuffledColors)이 반환됩니다. 이를 콘솔에 출력하면 다음과 같은 결과를 볼 수 있습니다:

['초록', '빨강', '주황', '파랑', '노랑']

결론

자바스크립트에서 배열을 무작위로 섞는 작업은 Fisher-Yates 알고리즘을 사용하면 간단히 구현할 수 있습니다. 이 글에서는 Fisher-Yates 알고리즘을 사용하여 자바스크립트 배열의 요소를 무작위로 섞는 방법을 알아보았습니다. 이러한 기법은 다양한 상황에서 활용할 수 있으며, 애플리케이션의 사용자 경험을 향상시키는 데 도움이 될 수 있습니다.