Maison  >  Article  >  interface Web  >  Comment générer un tableau de manière aléatoire en JavaScript

Comment générer un tableau de manière aléatoire en JavaScript

PHPz
PHPzoriginal
2023-04-24 09:07:451178parcourir

La nécessité de générer des tableaux de manière aléatoire apparaît souvent dans le développement JavaScript. Par exemple, supposons que nous ayons un tableau qui stocke beaucoup de données et que nous devions générer une partie des données de manière aléatoire. Alors, comment y parvenir ?

Voici plusieurs méthodes d'implémentation :

  1. Méthode Math.random()

La méthode Math.random() est une fonction de génération de nombres aléatoires fournie par JavaScript. Il renverra un nombre aléatoire entre 0 et 1. Nous pouvons utiliser cette méthode pour générer un index de nombres aléatoires, puis utiliser cet index pour obtenir l'élément correspondant du tableau d'origine.

L'exemple de code est le suivant :

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var randomIndex = Math.floor(Math.random() * arr.length);
console.log(arr[randomIndex]);

Dans le code ci-dessus, utilisez la méthode Math.random() pour générer un nombre aléatoire entre 0 et 1, puis multipliez-le par la longueur du tableau pour obtenir un nombre aléatoire. index.Utilisez cet index pour obtenir le nombre aléatoire de l'original Obtenez l'élément correspondant dans le tableau.

  1. Méthode Array.sort()

Une autre méthode consiste à utiliser la méthode Array.sort() pour trier aléatoirement le tableau, puis afficher les premiers éléments du tableau. L'implémentation spécifique est la suivante :

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.sort(function() { return Math.random() - 0.5 });
console.log(arr.slice(0, 3));

Le code ci-dessus utilise d'abord la méthode sort() pour trier aléatoirement le tableau. La méthode sort() accepte une fonction de comparaison comme paramètre. La valeur renvoyée par la fonction est inférieure à 0, indiquant que le premier paramètre est classé avant le deuxième paramètre. Auparavant, une valeur de retour supérieure à 0 signifiait que le premier paramètre venait après le deuxième paramètre. Puisque la fonction renvoie un nombre aléatoire, le tableau sera trié de manière aléatoire.

Utilisez ensuite la méthode slice() pour supprimer les trois premiers éléments du tableau à la suite d'une sortie aléatoire.

  1. Algorithme de brassage Fisher-Yates

L'algorithme de brassage Fisher-Yates, également connu sous le nom d'algorithme de brassage de Knuth, est un algorithme qui organise de manière aléatoire les éléments dans un tableau. Son implémentation est la suivante :

function shuffleArray(arr) {
  for (var i = arr.length - 1; i > 0; i--) {
    var j = Math.floor(Math.random() * (i + 1));
    var temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
  }
  return arr;
}

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(shuffleArray(arr).slice(0, 3));

Dans le code ci-dessus, en parcourant le tableau, chaque fois qu'une position aléatoire est sélectionnée pour l'échange, et finalement un tableau disposé aléatoirement est obtenu. Utilisez ensuite la méthode slice() pour supprimer les trois premiers éléments du tableau en tant que résultats de sortie aléatoires.

Résumé

Ci-dessus sont plusieurs méthodes de mise en œuvre courantes, chaque méthode a ses avantages et ses inconvénients. Par exemple, la première méthode est la plus simple, mais elle peut avoir le problème de générer à plusieurs reprises le même élément ; la deuxième méthode est relativement aléatoire, mais le code est un peu long ; la troisième méthode est une méthode d'implémentation relativement parfaite, mais. vous devez écrire une fonction pour l'encapsuler.

Les développeurs peuvent choisir une méthode de mise en œuvre appropriée en fonction de leurs besoins réels. Quoi qu’il en soit, la possibilité de générer des éléments de tableau de manière aléatoire est une compétence importante dans le développement JavaScript.

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!

Déclaration:
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