Maison > interface Web > js tutoriel > Comment puis-je mélanger efficacement un tableau en JavaScript ?

Comment puis-je mélanger efficacement un tableau en JavaScript ?

DDD
Libérer: 2024-12-19 02:56:09
original
615 Les gens l'ont consulté

How Can I Efficiently Shuffle an Array in JavaScript?

Mélange de tableaux avec JavaScript

L'algorithme de lecture aléatoire de Fisher-Yates offre une méthode efficace pour mélanger des tableaux en JavaScript. En échangeant aléatoirement des éléments, il garantit que chaque ordre possible a une chance égale de se produire.

Implémentation de l'algorithme

L'algorithme de lecture aléatoire de Fisher-Yates peut être implémenté comme suit :

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;
}
Copier après la connexion

Cet algorithme parcourt le tableau dans l'ordre inverse, en échangeant chaque élément avec un élément aléatoire devant lui dans le tableau. Le tableau résultant est mélangé en raison de la nature aléatoire des échanges.

Utilisation

La fonction shuffle peut être utilisée pour mélanger un tableau en utilisant la syntaxe suivante :

var myArray = ['1','2','3','4','5','6','7','8','9'];
shuffle(myArray);
Copier après la connexion

Version ES6

L'algorithme de Fisher-Yates a été optimisé dans ES6 :

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;
}
Copier après la connexion

Prototype d'implémentation

Cet algorithme peut être implémenté en tant que méthode de prototype de tableau pour faciliter le brassage direct des tableaux :

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;
    }
});
Copier après la connexion

Cette implémentation permet de mélanger les tableaux en utilisant la syntaxe arr.shuffle().

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal