【发布时间】:2014-10-08 17:44:53
【问题描述】:
我得到了一个数组,里面有一些字母。 请参见下面的示例。 首先,我希望数组被洗牌。好吧,我找到了最著名的 shuffle,称为 Fisher-Yates shuffle。
现在我想要它输出时,例如F2 不应位于 F 或 F' 旁边。 另一个也一样。 D 不应靠近 D2 或 D'。
它应该输出例如: R B2 U F L F D2 .... 以此类推。
而不是:R B2 B' L F D2 ...
任何帮助,建议?我知道我应该使用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);
【问题讨论】:
-
你是说要保证洗牌后的数组中不会有连续的项?
-
是的,正确的。这就是我想要的。
标签: javascript arrays shuffle charat