En JavaScript, le brassage des tableaux est une opération courante souvent utilisée dans la randomisation ou le développement de jeux. Pour mélanger efficacement un tableau, l'algorithme populaire de Fisher-Yates fournit une approche efficace.
Le principe de base de cet algorithme consiste à échanger à plusieurs reprises des éléments du tableau avec des éléments sélectionnés au hasard. éléments. Ce processus se poursuit jusqu'à ce que tous les éléments aient été échangés. Le code suivant implémente cet algorithme :
/** * Shuffles an array in place. * @param {Array} a Array containing the elements to be shuffled. */ 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; }
Dans ES6, le code peut être simplifié à l'aide de l'affectation de déstructuration :
/** * Shuffles an array in place. ES6 version. * @param {Array} a Array containing the elements to be shuffled. */ 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; }
Pour améliorer la lisibilité du code, vous pouvez ajouter la fonctionnalité de lecture aléatoire en tant que méthode prototype pour arrays :
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; } });
Cela vous permet d'appeler simplement arr.shuffle() pour mélanger un tableau nommé arr.
Pour utiliser la fonction shuffle, vous peut fournir un tableau d'éléments en entrée, tels que :
let myArray = ['1', '2', '3', '4', '5', '6', '7', '8', '9']; shuffle(myArray);
La fonction shuffle réorganisera de manière aléatoire les éléments dans myArray. Cette fonction peut être particulièrement utile dans les scénarios où vous avez besoin de données aléatoires ou de mélange de cartes dans un jeu.
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!