배열 랜덤 섞기 JAVA-SCRIPT

자바스크립트 배열 내용을 랜덤으로 섞어 추출하기.

<a href="javascript: suffleArray()">suffleArray</a>

<script>
    var targetArray = ["A", "B", "C", "D", "E", "F", "G"];

    function suffleArray() {
        var returnArray = targetArray.slice();    // 새로운 배열 변수 생성
        var len = returnArray.length;                // 배열 전체 사이즈

        // 배열 전체 사이즈에서 하나씩 감소 시키는 루프 실행
        while(len--) {
            // 현재 len 값 내에서 랜덤 숫자 발생 (len 값은 배열의 전체 사이즈에서 하나씩 감소
            // ex) 6 -> 5 -> 4 -> 3 -> 2 -> 1 -> 0)
            var arrayRandomNo = parseInt(Math.random() * len);
            // 변수에 현재 위치 값의 배열 값을 저장
            var tmpValue = returnArray[len];
   
            // 현재 위치의 변수 값을 랜덤 위치의 변수 값으로 변경
            returnArray[len] = returnArray[arrayRandomNo];
            // 랜덤 위치의 변수 값은 다시 원래 위치의 변수 값으로 변경
            returnArray[arrayRandomNo] = tmpValue;
        }

        alert("returnArray : " + returnArray);
    }
</script>



(응용) 문자열을 나눠 랜덤으로 섞어 추출 하기.

<script>
     // var targetArray = ["A", "B", "C", "D", "E", "F", "G"];
    var targetStr = "I Love You";
    var targetArray = targetStr.split(" ");

    function suffleArray() {
        var returnArray = targetArray.slice();
        var len = returnArray.length;

        var returnStr = "";

        while(len--) {
            var arrayRandomNo = parseInt(Math.random() * len);
            var tmpValue = returnArray[len];
   
            returnArray[len] = returnArray[arrayRandomNo];
            returnArray[arrayRandomNo] = tmpValue;

            returnStr += returnArray[len] + " ";
        }

        // alert("returnArray : " + returnArray);
        alert("returnStr : " + returnStr);

        // 혹은 따로 (변수 returnStr) 문자열을 생성하지 않고 배열에서 추출 할 경우
        for(var i = 0; i < returnArray.length; i++) {
            alert(i + " | " + returnArray[i]);
        }
    }
</script>


1 2 3 4 5 6 7 8 9 10 다음