从 JavaScript 数组中获取一个随机项

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

如何从 items得到随机项目?

1309231 次浏览
var item = items[Math.floor(Math.random()*items.length)];
var rndval=items[Math.floor(Math.random()*items.length)];
var random = items[Math.floor(Math.random()*items.length)]

jQuery是JavaScript!它只是一个JavaScript框架。因此,要查找随机项目,只需使用普通的旧JavaScript,例如,

var randomItem = 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];

信用:

Javascript函数:随机数生成器

如果你真的必须使用jQuery来解决这个问题(注意:你不应该):

(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);

这个插件将返回一个随机元素,如果给定一个数组,或者一个来自[0… n)的值,给定一个数字,或者给定其他任何东西,一个保证的随机值!

为了额外的乐趣,数组返回是通过根据数组的长度递归调用函数来生成的:)

工作演示http://jsfiddle.net/2eyQX/

另一种方法是向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)

使用下划线(或loDash:)):

var randomArray = ['#cc0000','#00cc00', '#0000cc'];
// use _.samplevar randomElement = _.sample(randomArray);
// manually use _.randomvar randomElement = randomArray[_.random(randomArray.length-1)];

或者洗牌整个数组:

// use underscore's shuffle functionvar firstRandomElement = _.shuffle(randomArray)[0];
// 1. Random shuffle itemsitems.sort(function() {return 0.5 - Math.random()})
// 2. Get first itemvar item = items[0]

更短:

var item = items.sort(function() {return 0.5 - Math.random()})[0];

甚至Shooter(由JosédB.):

let item = items.sort(() => 0.5 - Math.random())[0];
const ArrayRandomModule = {// get random item from arrayrandom: function (array) {return array[Math.random() * array.length | 0];},
// [mutate]: extract from given array a random itempick: function (array, i) {return array.splice(i >= 0 ? i : Math.random() * array.length | 0, 1)[0];},
// [mutate]: shuffle the given arrayshuffle: function (array) {for (var i = array.length; i > 0; --i)array.push(array.splice(Math.random() * i | 0, 1)[0]);return array;}}

这里还有另一种方法:

function rand(items) {// "~~" for a closest "int"return items[~~(items.length * Math.random())];}

如下面的@1248177所示:

function rand(items) {// "|" for a kinda "int div"return items[items.length * Math.random() | 0];}

1.解决方案:定义数组原型

Array.prototype.random = function () {return this[Math.floor((Math.random()*this.length))];}

它将适用于内联数组

[2,3,5].random()

当然还有预定义数组

var list = [2,3,5]list.random()

2.解决方案:定义接受list并返回元素的自定义函数

function get_random (list) {return list[Math.floor((Math.random()*list.length))];}

get_random([2,3,5])

如果您使用node.js,您可以使用唯一-随机-数组。它只是从数组中随机选择一些东西。