我想从javascript中获取随机变量并将其添加到div容器中:
// my Array
var thumbnailArray = new Array();
thumbnailArray[0] = 'contentarray1';
thumbnailArray[1] = 'contentarray2';
thumbnailArray[2] = 'contentarray3';
function thumbnailquery () {
for (var i = 0; i <= 3; i++) {
$('#myDiv').prepend(thumbnailArray[Math.floor(Math.random() * thumbnailArray.length)])
}
}
现在我如何确保每个变量只采用一次但仍然是随机的?
谢谢
答案 0 :(得分:3)
改组数组并弹出值
function shuffle(a) {
var c=a.length,t,r;
while (0 !== c) {
r = Math.floor(Math.random() * c);
c -= 1;t = a[c];a[c] = a[r];a[r] = t;
}
return a;
}
var thumbnailArray = [
'contentarray1',
'contentarray2',
'contentarray3'
];
shuffle( thumbnailArray );
thumbnailquery();
function thumbnailquery () {
for (var i = 0; i <= 3; i++) {
$('#myDiv').prepend( thumbnailArray.pop() );
}
}
答案 1 :(得分:1)
复制数组。然后删除从复制的数组中获取的对象。
答案 2 :(得分:1)
没有优雅的方式按照你描述的方式去做。您可以构造一个“选定索引”数组,并确保该数组中不存在每个随机数,但是最差的操作时间为无穷大,因此不建议使用。
你最好的选择是将数组洗牌,然后迭代,按顺序选择元素(洗牌顺序)。
请参阅此Stack Overflow以获得在JavaScript中随机播放数组的好方法 How can i shuffle an array in JavaScript?
答案 3 :(得分:1)
使用splice()http://www.w3schools.com/jsref/jsref_splice.asp
randNum = thumbnailArray[Math.floor(Math.random() * thumbnailArray.length)]
$('#myDiv').prepend(splice(randNum,1))