如何从数组中获取随机元素

时间:2011-08-23 09:10:45

标签: javascript

  

可能重复:
  JavaScript: Getting random value from an array

var numbers = new Array('1','2','4','5','6','7','8','9','10');

我有一个JavaScript数组,现在想从中随机选择四个不同的数字然后在页面上表达(通过document.write)。显然,每次用户重新加载页面时,它都会显示四个不同的随机数。

4 个答案:

答案 0 :(得分:55)

您可以随机播放阵列并选择前四个。

numbers.sort( function() { return 0.5 - Math.random() } );

现在numbers[0]numbers[1] ...等具有随机且唯一的元素。

请注意,此方法可能不是改组数组的最佳方法:请参阅Is it correct to use JavaScript Array.sort() method for shuffling?进行讨论。

答案 1 :(得分:21)

如果你想让它像JavaScript的Math.random()的本机实现一样随机,你可以使用类似下面这样的东西,这样做的好处是保持原始数组不受影响,只有随机化数组根据需要:

function getRandomArrayElements(arr, count) {
    var shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index;
    while (i-- > min) {
        index = Math.floor((i + 1) * Math.random());
        temp = shuffled[index];
        shuffled[index] = shuffled[i];
        shuffled[i] = temp;
    }
    return shuffled.slice(min);
}


var numbers = ['1','2','4','5','6','7','8','9','10'];
alert( getRandomArrayElements(numbers, 4) );

答案 2 :(得分:3)

//return a random integer between 0 and 10

document.write(Math.floor(Math.random()*11));

答案 3 :(得分:3)

var numbers = new Array('1','2','4','5','6','7','8','9','10');
document.write(numbers[Math.floor(Math.random()*numbers.length)]);