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

时间:2011-06-24 15:31:45

标签: javascript jquery arrays random

我知道这在PHP中是怎么做的,但在javascript数组中很奇怪。

所以我有一组图像过渡,其效果使用缓动方程。 对于某些效果,我想从多个值的数组中选取一个随机值:

类似的东西:

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

4 个答案:

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

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

答案 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)的解决方案。