我知道这在PHP中是怎么做的,但在javascript数组中很奇怪。
所以我有一组图像过渡,其效果使用缓动方程。 对于某些效果,我想从多个值的数组中选取一个随机值:
类似的东西:
easing: randomFrom(array('easeOutElastic', 'easeOutBounce', 'easeOutSince')),
答案 0 :(得分:10)
function randomFrom(array) {
return array[Math.floor(Math.random() * array.length)];
}
// in your code
easing: randomFrom(['easeOutElastic', 'easeOutBounce', 'easeOutSince']),
答案 1 :(得分:5)
试试这个:
function randomFrom(arr){
var randomIndex = Math.floor(Math.random() * arr.length);
return arr[randomIndex];
}
答案 2 :(得分:1)
对于演示,我试图获得随机缓动字符串;)
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();
答案 3 :(得分:1)
我是这个问题的后来者。如果您不介意向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)
的解决方案。