Javascript从数组中获取随机变量,但每个变量只获取一次
我想从javascript中获取随机变量,并将其预先添加到div容器中,如下所示:Javascript从数组中获取随机变量,但每个变量只获取一次,javascript,jquery,arrays,random,Javascript,Jquery,Arrays,Random,我想从javascript中获取随机变量,并将其预先添加到div容器中,如下所示: // my Array var thumbnailArray = new Array(); thumbnailArray[0] = 'contentarray1'; thumbnailArray[1] = 'contentarray2'; thumbnailArray[2] = 'contentarray3'; function thumbnailquery () { for (var i = 0; i &l
// 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)])
}
}
现在,我如何确保每个变量只取一次,但仍然是随机的
谢谢复制阵列。然后删除从复制的数组中获取的对象。复制数组。然后删除从复制的数组中获取的对象。没有优雅的方法可以按照您描述的方式执行。您可以构造一个选定索引的数组,并确保该数组中不存在每个随机数,但最坏情况下的操作时间为无穷大,因此强烈不建议这样做 你最好的办法是洗牌数组,然后迭代,按洗牌顺序选择元素 查看此堆栈溢出,了解在JavaScript中洗牌数组的好方法
没有优雅的方式可以按照你描述的方式来做。您可以构造一个选定索引的数组,并确保该数组中不存在每个随机数,但最坏情况下的操作时间为无穷大,因此强烈不建议这样做 你最好的办法是洗牌数组,然后迭代,按洗牌顺序选择元素 查看此堆栈溢出,了解在JavaScript中洗牌数组的好方法
将数组洗牌并弹出值
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() );
}
}
改为洗牌数组并弹出值
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() );
}
}
使用拼接
使用拼接
是否必须将元素保留在数组中?如果没有,您可以在选择该元素后将其从数组中删除。嗯,如果该元素保留在数组中会更好您必须将该元素保留在数组中吗?如果没有,您可以在选择它之后将其从数组中删除。嗯,如果它留在数组中作为参考会更好