Heim >Web-Frontend >js-Tutorial >Wie kann ich ein Array in JavaScript effizient mischen?

Wie kann ich ein Array in JavaScript effizient mischen?

DDD
DDDOriginal
2024-12-19 02:56:09606Durchsuche

How Can I Efficiently Shuffle an Array in JavaScript?

Arrays mit JavaScript mischen

Der Fisher-Yates-Shuffle-Algorithmus bietet eine effektive Methode zum Mischen von Arrays in JavaScript. Durch den zufälligen Austausch von Elementen wird sichergestellt, dass jede mögliche Reihenfolge die gleiche Wahrscheinlichkeit hat, dass sie auftritt.

Algorithmusimplementierung

Der Fisher-Yates-Shuffle-Algorithmus kann wie folgt implementiert werden:

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;
}

Dieser Algorithmus durchläuft das Array in umgekehrter Reihenfolge und tauscht dabei jedes Element durch ein zufälliges Element davor im Array aus. Das resultierende Array wird aufgrund der zufälligen Natur der Swaps gemischt.

Verwendung

Mit der Shuffle-Funktion kann ein Array mithilfe der folgenden Syntax gemischt werden:

var myArray = ['1','2','3','4','5','6','7','8','9'];
shuffle(myArray);

ES6-Version

Der Fisher-Yates-Algorithmus wurde in ES6 optimiert:

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

Implementierungsprototyp

Dieser Algorithmus kann als Array-Prototypmethode implementiert werden, um das direkte Mischen von Arrays zu erleichtern:

Object.defineProperty(Array.prototype, 'shuffle', {
    value: function() {
        for (let i = this.length - 1; i > 0; i--) {
            const j = Math.floor(Math.random() * (i + 1));
            [this[i], this[j]] = [this[j], this[i]];
        }
        return this;
    }
});

Diese Implementierung ermöglicht das Mischen von Arrays mithilfe der arr.shuffle()-Syntax.

Das obige ist der detaillierte Inhalt vonWie kann ich ein Array in JavaScript effizient mischen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:DruckwarteschlangeNächster Artikel:Druckwarteschlange