Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 배열을 무작위로 섞는 방법: _.shuffle() 완벽 가이드

_.shuffle() 함수란?

_.shuffle()은 자바스크립트 유틸리티 라이브러리인 Underscore.js(그리고 이를 계승한 Lodash)에서 제공하는 함수로, 배열의 요소들을 무작위(random) 순서로 섞어주는 기능을 합니다. 내부적으로는 검증된 Fisher-Yates 셔플 알고리즘을 사용하기 때문에 모든 순서 조합이 동일한 확률로 나타나는 공정한 셔플이 보장됩니다.

문법

_.shuffle(array);

이 메서드는 배열을 인자로 받아 요소들의 순서를 무작위로 뒤섞습니다. 동일한 입력값이라도 실행할 때마다 서로 다른 랜덤 결과가 출력되는 것이 특징입니다.

예제 1: 문자열 배열 섞기

<html>
<body>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script>
<script>
    document.write(_.shuffle(["raj", "pankaj", "rahim", "rachel", "Balakrishna"]));
</script>
</body>
</html>

출력 결과

rahim,Balakrishna,pankaj,raj,rachel

새로고침할 때마다 요소의 순서가 달라지는 것을 확인할 수 있습니다.

객체 배열도 섞을 수 있습니다

_.shuffle()은 단순한 문자열 배열뿐만 아니라 객체(object)로 이루어진 배열도 Fisher-Yates 셔플 알고리즘을 통해 손쉽게 섞을 수 있습니다.

예제 2: 객체 배열 섞기

<html>
<body>
<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script>
<script>
    var people = [
        {"name": "Ram", "age": 27},
        {"name": "Rahim", "age": 28},
        {"name": "Rakul", "age": 29},
        {"name": "Rohti", "age": 21}
    ];
    document.write(JSON.stringify(_.shuffle(people)));
</script>
</body>
</html>

출력 결과

[{"name":"Rahim","age":28},{"name":"Rakul","age":29},{"name":"Ram","age":27},{"name":"Rohti","age":21}]

정리

배열을 무작위로 섞어야 할 때 셔플 로직을 직접 구현하는 대신 _.shuffle()을 사용하면 코드가 훨씬 간결해집니다. Fisher-Yates 셔플 알고리즘 기반으로 동작하므로 특정 요소에 편향 없이 균등한 확률로 배치되며, 문자열 배열과 객체 배열 모두 문제없이 처리할 수 있다는 점이 큰 장점입니다.