272 votos

Obtener un elemento aleatorio de una matriz de JavaScript

var items = Array(523,3452,334,31,...5346);

¿Cómo puedo obtener un artículo al azar de items ?

Estoy usando jQuery, así que las respuestas que involucran a jQuery son bienvenidas.

605voto

Kelly Puntos 8780
var item = items[Math.floor(Math.random()*items.length)];

49voto

Alnitak Puntos 143355

Si realmente debe utilizar jQuery para resolver este problema:

(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 = $.rand(items);

Este plugin devolverá un elemento aleatorio si se le da un Array, o un valor de [0 .. n) si se le da un número, o si se le da cualquier otra cosa, ¡un valor aleatorio garantizado!

Para mayor diversión, el retorno de la matriz se genera llamando a la función de forma recursiva en función de la longitud de la matriz :)

Demostración de trabajo en http://jsfiddle.net/2eyQX/

37voto

chim Puntos 1799

Utilice el guión bajo:

// use underscore's random function for just one
var randomArray = [
   '#cc0000','#00cc00', '#0000cc'
];

var randomElement = randomArray[_.random(randomArray.length-1)];

O para barajar todo un Array:

// use underscore's shuffle function
var firstRandomElement = _.shuffle(randomArray)[0];

13voto

Rocket Hazmat Puntos 87407
var random = items[Math.floor(Math.random()*items.length)]

9voto

Blindy Puntos 26706
var rndval=items[Math.floor(Math.random()*items.length)];

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X