Javascript从数组中获取随机变量,但每次只有一次

时间:2013-12-10 19:55:34

标签: 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 <= 3; i++) {
$('#myDiv').prepend(thumbnailArray[Math.floor(Math.random() * thumbnailArray.length)])
}
}

现在我如何确保每个变量只采用一次但仍然是随机的?

谢谢

4 个答案:

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

FIDDLE

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