La réorganisation d'un tableau signifie perturber l'ordre de tous les éléments du tableau.
Une méthode courante consiste à transmettre une fonction dans la méthode de tri native du tableau. Cette fonction renvoie aléatoirement 1 ou -1 pour atteindre l'objectif d'organiser aléatoirement les éléments du tableau.
Bien que cette méthode soit intuitive, elle n'est pas très efficace. D'après mon test, le temps nécessaire pour brouiller un tableau de 10 000 éléments est d'environ 35 ms (firefox)
J'ai toujours eu la qualité de demander des réponses, j'ai donc recherché une méthode efficace. Voir le texte original ici
Cette méthode ajoute une fonction à Array.prototype appelée shuffle - mais le nom n'a pas d'importance, ce qui est important c'est son efficacité.
Prenez mon tableau ci-dessus de 10 000 éléments pour tester. Cela ne prend que 7 ou 8 millisecondes pour terminer l'opération dans le désordre en utilisant cette méthode.
Augmentez les éléments du tableau 10 fois jusqu'à 100 000 pour tester. La première méthode de tri prend environ 500 ms et la méthode de lecture aléatoire prend environ 40 ms.
Code de test complet :
//La méthode suivante est la plus efficace
si (!Array.prototype.shuffle) {
Array.prototype.shuffle = function() {
for(var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j ] = x);
renvoie ceci ;
};
>
var t = new Date().getTime();
arr.shuffle();
document.write('
'arr'
');
var t1 = new Date().getTime();
document.write(t1-t);
De plus, avez-vous remarqué que la boucle for dans le code shuffle n'a pas la seconde moitié ! Autrement dit, il n'y a que for(..) mais pas de {..} derrière. Cela peut être écrit comme ça ! Et il s’exécute normalement ! C'est curieux, je dois aller au parc des blogs et demander.