在Javascript中,如何从列表中生成随机元素?

时间:2010-12-14 01:03:44

标签: javascript jquery list

假设我有一个字符串列表。如何生成随机的?

4 个答案:

答案 0 :(得分:21)

你的意思是,获得一个随机数组成员?

var strings = ['a', 'b', 'c'];

var randomIndex = Math.floor(Math.random() * strings.length);

var randomString = strings[randomIndex];

See it on jsFiddle

如果你的意思是随机字符串,那就有点不同了。

var randomStrLength = 16,
    pool = 'abcdefghijklmnopqrstuvwxyz0123456789',
    randomStr = '';


for (var i = 0; i < randomStrLength; i++) {
     var randomChar = pool.charAt(Math.floor(Math.random() * pool.length));
     randomStr += randomChar;   
}

See it on jsFiddle

当然,您可以跳过pool变量并使用介于97(String.fromCharCode())和122('a'.charCodeAt(0))之间的随机数进行'z'.charCodeAt(0)小写字母等但是根据你想要的范围(小写和大写,加上特殊字符),使用池不太复杂。

答案 1 :(得分:8)

亚历克斯和马赫什是对的,只是想展示如果我觉得生活危险,我可以如何实施他们的解决方案。我做的。

Array.prototype.chooseRandom = function() {
  return this[Math.floor(Math.random() * this.length)];
};
var a = [1, 2, 3, 4, 5];
a.chooseRandom(); // => 2
a.chooseRandom(); // => 1
a.chooseRandom(); // => 5

答案 2 :(得分:2)

var randomString = myStrings[Math.floor(Math.random() * myStrings.length)]

答案 3 :(得分:0)

var rand = 0; 
var newPic = []; 
var pic = [1,2,3] //length = 18 for ( var i=0; i<18; i++ ){ 
    rand = Math.floor(Math.random()*19); 
    newPic.push(pic[rand-1].slice()); 
} alert(newPic);