不要重复math.random中的任何项目

时间:2013-09-21 11:14:21

标签: javascript jquery

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

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

我确信这是一件很简单的事,但我真的不知道在哪里看。我怎样才能确保没有重复项?

3 个答案:

答案 0 :(得分:2)

Working Demo Here

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

  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);

  });

Se your Demo on JsFiddle

答案 1 :(得分: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);
});

演示:Fiddle

答案 2 :(得分:0)

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