"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > JavaScript로 배열을 효율적으로 셔플하려면 어떻게해야합니까?

JavaScript로 배열을 효율적으로 셔플하려면 어떻게해야합니까?

2025-03-04에 게시되었습니다
검색:614

How Can I Efficiently Shuffle an Array in JavaScript?

알고리즘 구현

셔플 알고리즘은 다음과 같이 구현할 수 있습니다. var j, x, i; for (i = a.length-1; i> 0; i-) { j = math.floor (math.random () * (i 1)); x = a [i]; a [i] = a [j]; [J] = x; } 반환 a; }

이 알고리즘은 배열을 역 순서로 반복하여 각 요소를 배열에서 임의의 요소로 교체합니다. 결과 배열은 스왑의 임의의 특성으로 인해 섞여 있습니다.

사용법

function shuffle(a) {
    var j, x, i;
    for (i = a.length - 1; i > 0; i--) {
        j = Math.floor(Math.random() * (i   1));
        x = a[i];
        a[i] = a[j];
        a[j] = x;
    }
    return a;
}

셔플 함수는 다음 구문을 사용하여 배열을 셔플하는 데 사용될 수 있습니다.

var myarray = ; 셔플 (myArray);

es6 version

function shuffle(a) {
    var j, x, i;
    for (i = a.length - 1; i > 0; i--) {
        j = Math.floor(Math.random() * (i   1));
        x = a[i];
        a[i] = a[j];
        a[j] = x;
    }
    return a;
}

fisher-yates 알고리즘은 es6 :

function shuff (a) { for (i = a.length-1; i> 0; i-) { const j = math.floor (math.random () * (i 1)); [a [i], a [j]] = [a [j], a [i]]; } 반환 a; }

function shuffle(a) {
    var j, x, i;
    for (i = a.length - 1; i > 0; i--) {
        j = Math.floor(Math.random() * (i   1));
        x = a[i];
        a[i] = a[j];
        a[j] = x;
    }
    return a;
}
구현 프로토 타입

, this [j]] = [this [j], this [i]]; } 이것을 반환하십시오; } }); 이 구현을 통해 arr.shuffle () 구문을 사용하여 배열을 섞을 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3