我編寫了一個簡單的隨機化函數,它循環訪問數組中的元素並逐個顯示它們。從數組中獲取隨機元素,顯示它並循環 - 但從未使用過相同的元素
function changeSubTitle() {
var whatAmI = ["Webdesigner", "Drummer", "Techie", "Linguistics student", "Photographer", "Geek", "Coder", "Belgian", "Batman", "Musician", "StackExchanger", "AI student"];
setTimeout(function() {
$(".page-header > h2").animate({
"opacity": 0
}, 700, function() {
$(this).text(whatAmI[Math.floor(Math.random() * whatAmI.length)]);
$(this).animate({
"opacity": 1
}, 700, changeSubTitle);
});
}, 1000);
}
然而,這顯然是非常可能的是相同的元素顯示兩次,一個後另一個。發生這種情況是因爲我每次調用該函數時都會隨機化數組。我將如何防止一個元素相繼顯示兩次?
我想最直接的方式做,這是獲得隨機化功能了循環,運行循環,每一個元素被調用時,從陣列中刪除索引和填充數組的時候它是空的。很多關於SO的問題都考慮了這個問題,但並不像我的那樣具體:我不確定如何在循環中執行此操作來顯示每個元素。
我會做的是先洗牌數組,然後像通常那樣逐個顯示每個元素。檢查這個http://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array-in-javascript關於如何洗牌 – astroanu