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

Wie kann ich ein Array in JavaScript effizient mischen?

DDD
Freigeben: 2024-12-19 02:56:09
Original
603 Leute haben es durchsucht

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;
}
Nach dem Login kopieren

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);
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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;
    }
});
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage