jQuery 从字符串数组中选择一个随机值

Posted

技术标签:

【中文标题】jQuery 从字符串数组中选择一个随机值【英文标题】:jQuery pick a random value from a array of strings 【发布时间】:2011-09-22 03:27:05 【问题描述】:

我知道如何在 php 中做到这一点,但在 javascript 中数组很奇怪。

所以我有一组图像转换,它们具有使用缓动方程的效果。 对于某些效果,我想从多个值的数组中获取一个随机值:

类似:

easing: randomFrom(array('easeOutElastic', 'easeOutBounce', 'easeOutSince')),

【问题讨论】:

【参考方案1】:
function randomFrom(array) 
  return array[Math.floor(Math.random() * array.length)];


// in your code
easing: randomFrom(['easeOutElastic', 'easeOutBounce', 'easeOutSince']),

【讨论】:

我已经很接近了,但你忘了返回:-P @Neal,哎呀,当你做太多 Ruby 时会发生这种情况。【参考方案2】:

试试这个:

function randomFrom(arr)
    var randomIndex = Math.floor(Math.random() * arr.length);
    return arr[randomIndex];

【讨论】:

【参考方案3】:

对于一个演示,我试图获得一个随机缓动字符串;)

function getRandomEasing() 
   var easingArr = [];
   for(easing in $.easing)
      easingArr.push(easing);
   
   var rnd = Math.floor(Math.random() * easingArr.length);
   return easingArr[rnd];


var randomEasing = getRandomEasing();

有趣的演示:http://jsfiddle.net/aamir/psWvy/

【讨论】:

我不明白为什么在原来的解决方案中,每次都需要创建一个新数组?为什么不直接返回$.easing 中的元素呢? jsfiddle.net/psWvy/2【参考方案4】:

这个问题我来晚了。如果您不介意向Array 添加方法,您可以:

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

试运行:

> [10, 123, 777].pickARandomElement()
10

> [10, 123, 777].pickARandomElement()
777

> [10, 123, 777].pickARandomElement()
777

> [10, 123, 777].pickARandomElement()
123

以下内容纯属娱乐:

Array.prototype.pickARandomElement = function()  
    return this.sort(function()  return Math.random() - 0.5; )[0]; 

这就像洗一副牌并返回最上面的牌。但是它的时间复杂度是O(n log n) 所以我不会真正使用它,它只是为了好玩。这里的第一个解决方案是O(1)的解决方案。

【讨论】:

以上是关于jQuery 从字符串数组中选择一个随机值的主要内容,如果未能解决你的问题,请参考以下文章

从 1 和 0 的字符串中选择随机数并更改颜色

Unity & C# - 从数组中选择一个随机字符串

从数组中选择一个随机字符串[重复]

从数组中选择一个随机字符串[重复]

使用jQuery从数组中选择一个随机元素[重复]

如何从数组中选择随机字符串并将其分配给变量? [复制]