我得到了一個數組,它充滿了一些字母。 請參閱下面的示例。 首先,我希望數組正在洗牌。好吧,我找到了最有名的洗牌機,叫做Fisher-Yates shuffle。Javascript陣列shuffle不應該輸出兩個旁邊的海誓山盟
現在我希望當它輸出時,例如F2不應該在F或F'旁邊。 其他的一樣。 D不應該接近D2或D'。
它應該輸出例如: R B2 U F L F D2 ....等等。
,而不是,R B2 B」大號˚FD2 ......
任何幫助,建議?我知道我應該檢查與charAt()
的第一個字符,但我不是那個功能的專家。
的Javascript
function shuffle(sides) {
var elementsRemaining = sides.length, temp, randomIndex, last;
while (elementsRemaining > 1) {
randomIndex = Math.floor(Math.random() * elementsRemaining--);
if (randomIndex != elementsRemaining) {
temp = sides[elementsRemaining];
sides[elementsRemaining] = sides[randomIndex];
sides[randomIndex] = temp;
}
};
}
return sides;
}
var sides = ["F ", "R ", "U ", "L ", "D ", "F2 ", "R2 ", "U2 ", "L2 ", "D2 ", "F' ", "R' ", "U' ", "L' ", "D' "];
shuffle(sides);
$('#scramble').html(sides);
你是說你要保證洗牌後的數組中沒有連續的項目嗎? – 2014-10-08 17:53:12
是的,正確的。這就是我想要的。 – user3613655 2014-10-08 17:56:02