var items = Array(523,3452,334,31,...5346);
Comment puis-je obtenir un élément aléatoire de items
?
var item = items[Math.floor(Math.random()*items.length)];
Si vous devez réellement utiliser jQuery pour résoudre ce problème:
(function($) {
$.Rand = function(arg) {
if ($.isArray(arg)) {
return arg[$.Rand(arg.length)];
} else if (typeof arg === "number") {
return Math.floor(Math.random() * arg);
} else {
return 4; // chosen by fair dice roll
}
};
})(jQuery);
var items = [523, 3452, 334, 31, ..., 5346];
var item = jQuery.Rand(items);
Ce plugin renverra un élément aléatoire si un tableau ou une valeur de [0 .. n) est attribué à un nombre, ou toute autre valeur, une valeur aléatoire garantie!
Pour plus de plaisir, le retour du tableau est généré en appelant la fonction de manière récursive en fonction de la longueur du tableau :)
Démo de travail à http://jsfiddle.net/2eyQX/
Utilisez le trait de soulignement (ou loDash :)):
var randomArray = [
'#cc0000','#00cc00', '#0000cc'
];
// use _.sample
var randomElement = _.sample(randomArray);
// manually use _.random
var randomElement = randomArray[_.random(randomArray.length-1)];
Ou pour mélanger un tableau entier:
// use underscore's shuffle function
var firstRandomElement = _.shuffle(randomArray)[0];
1. Solution: définir le prototype du tablea
Array.prototype.random = function () {
return this[Math.floor((Math.random()*this.length))];
}
cela fonctionnera sur les tableaux en ligne
[2,3,5].random()
et bien sûr des tableaux prédéfinis
list = [2,3,5]
list.random()
2. solution: définit une fonction personnalisée qui accepte une liste et renvoie un élément
get_random = function (list) {
return list[Math.floor((Math.random()*list.length))];
}
get_random([2,3,5])
var random = items[Math.floor(Math.random()*items.length)]
Voici encore un autre moyen:
function Rand(items) {
return items[~~(items.length * Math.random())];
}
jQuery est JavaScript! C'est juste un framework JavaScript. Donc, pour trouver un élément au hasard, utilisez simplement du vieux JavaScript, par exemple,
var randomItem = items[Math.floor(Math.random()*items.length)]
var rndval=items[Math.floor(Math.random()*items.length)];
var items = Array(523,3452,334,31,...5346);
function Rand(min, max) {
var offset = min;
var range = (max - min) + 1;
var randomNumber = Math.floor( Math.random() * range) + offset;
return randomNumber;
}
randomNumber = Rand(0, items.length - 1);
randomItem = items[randomNumber];
crédit:
// 1. Random shuffle items
items.sort(function() {return 0.5 - Math.random()})
// 2. Get first item
var item = items[0]
Plus court:
var item = items.sort(function() {return 0.5 - Math.random()})[0];
Si vous utilisez node.js, vous pouvez utiliser unique-random-array . Il choisit simplement quelque chose de aléatoire dans un tableau.
const ArrayRandomModule = {
// get random item from array
random: function (array) {
return array[Math.random() * array.length | 0];
},
// [mutate]: extract from given array a random item
pick: function (array, i) {
return array.splice(i >= 0 ? i : Math.random() * array.length | 0, 1)[0];
},
// [mutate]: shuffle the given array
shuffle: function (array) {
for (var i = array.length; i > 0; --i)
array.Push(array.splice(Math.random() * i | 0, 1)[0]);
return array;
}
}
Une autre solution serait d’ajouter une méthode au prototype Array:
Array.prototype.random = function (length) {
return this[Math.floor((Math.random()*length))];
}
var teams = ['patriots', 'colts', 'jets', 'texans', 'ravens', 'broncos']
var chosen_team = teams.random(teams.length)
alert(chosen_team)