var myArray = ['January', 'February', 'March'];
Comment sélectionner de manière aléatoire à partir de ce tableau?
var myArray = ['January', 'February', 'March'];
Comment sélectionner de manière aléatoire à partir de ce tableau?
Je l'ai trouvé encore plus simple pour ajouter une fonction prototype de la classe Array:
Array.prototype.randomElement = function () {
return this[Math.floor(Math.random() * this.length)]
}
Maintenant, je peux obtenir un ensemble aléatoire de l'élément simplement en tapant:
var myRandomElement = myArray.randomElement()
Notez que cela va ajouter une propriété à tous les tableaux, donc si vous êtes parcourant un à l'aide d' for..in
vous devez utiliser .hasOwnProperty()
:
for (var prop in myArray) {
if (myArray.hasOwnProperty(prop)) {
...
}
}
(Qui peut ou peut ne pas être une corvée pour vous.)
Dites que vous voulez choisir un élément de hasard qui est différent de la dernière fois (pas vraiment aléatoire, mais toujours une exigence commune)...
Bâtiment en fonction de la réponse par @Markus, nous pouvons ajouter un autre prototype de la fonction:
Array.prototype.randomDiffElement = function(last) {
if (this.length == 0) {
return;
} else if (this.length == 1) {
return this[0];
} else {
var num = 0;
do {
num = Math.floor(Math.random() * this.length);
} while (this[num] == last);
return this[num];
}
}
Et de mettre en œuvre comme suit:
var myRandomDiffElement = myArray.randomDiffElement(lastRandomElement)
À mon avis, mieux que de déconner avec des prototypes , ou le déclarer juste à temps, je préfère exposer à la fenêtre:
window.choice = function() {
if (!this.length || this.length == 0) return;
if (this.length == 1) return this[0];
return this[Math.floor(Math.random()*this.length)];
}
Maintenant, n'importe où sur votre application, vous l'appelez comme:
var rand = window.choice.call(array)
De cette façon, vous pouvez toujours utiliser for(x in array)
boucle correctement
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.