Maison >interface Web >js tutoriel >Comment puis-je mélanger efficacement un tableau en 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; }
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);
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; }
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; } });
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!