2013-09-21 41 views
1

重複任何項目我使用這個來從我的陣列中的隨機項目(並追加到每個列表項)不從的Math.random

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

我敢肯定,這是一個快速但我真的不知道在哪裏看。我怎樣才能確保沒有重複項目?

+1

得到它後可能刪除項目?這意味着你需要在'each'循環之前聲明'items'。 – Cristy

+0

[jQuery數學隨機數而不重複以前的數字]的可能重複(http://stackoverflow.com/questions/6625551/jquery-math-random-number-without-repeating-a-previous-number) – Pointy

回答

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

    }); 

your Demo on JsFiddle

0

所以你想元素隨機但不重複?那麼你要找的是一個隨機排列。如果你想要一個快速解決方案,只需隨機交換數組中的元素。如果你想有一個均勻分佈的隨機排列,看看埃裏克利珀關於這個問題的文章:http://ericlippert.com/2013/05/02/producing-permutations-part-six/

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