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 从字符串数组中选择一个随机值的主要内容,如果未能解决你的问题,请参考以下文章