2020. 8. 8. 14:33
반응형

자바스크립트 배열을 섞을 필요가 있을 때가 있다.

전에 만들어둔 내용도 있는데 다시 만들어봤다.

Array.prototype.map, Array.prototype.sort 기능을 활용했다.

 

기존 배열:
새로운 배열:

<div>기존 배열: <span id="originalArr"></span></div>
<button id="getRandom">getRandom</button>
<div>새로운 배열: <span id="newArr"></span></div>
<script>
    $(function(){
        var originalArr = [1, 2, 3, 4, 5, 6, 7, 8];
        $("#originalArr").text(originalArr.join(","));
        $("#getRandom").click(function(){
            var newArr = getRandomArray(originalArr);
            $("#newArr").text(newArr.join(","));
        });
    });
    function getRandomArray(arr) {
        var newArray = arr.map(function(x){
            return {o:x, r:Math.random()};
        }).sort(function(a,b){
            return a.r > b.r ? 1 : a.r < b.r ? -1 : 0;
        }).map(function(x){
            return x.o;
        });
        return newArray;
    }
</script>
반응형