1

我正在使用它从我的数组中获取一个随机项(并将其附加到每个列表项)

   $('li').each(function(){
       var items = Array('the','and','to','a');
       var item = items[Math.floor(Math.random()*items.length)];
       $(this).append(item);
    });

我敢肯定这是一件很快的事情,但我真的不知道去哪里找。如何确保没有重复项目?

4

3 回答 3

2

工作演示在这里

您需要从数组中删除使用的值。

  var items = Array('the', 'and', 'to', 'a');
  $('li').each(function () {
      var randomNum = Math.floor(Math.random() * items.length)
      var item = items[randomNum];
      $(this).append(item);
      items.splice(randomNum, 1);
      
  });

在JsFiddle上查看您的演示

于 2013-09-21T11:21:50.723 回答
1

尝试

var items = new Array('the','and','to','a');
$('li').each(function(){
    var item = items.splice(Math.floor(Math.random() * items.length), 1);
    $(this).append(item);
});

演示:小提琴

于 2013-09-21T11:19:29.220 回答
0

所以你想要元素随机但不重复?那么你正在寻找的是一个随机排列。如果您想要一个快速的'n'dirty 解决方案,只需随机交换数组中的元素。如果您想要一个均匀分布的随机排列,请查看 Eric Lippert 关于该主题的文章: http: //ericlippert.com/2013/05/02/produce-permutations-part-six/

于 2013-09-21T11:19:17.350 回答