我正在尝试实现Fisher–Yates shuffle,但是当我使用警报测试下面的代码时,它似乎没有循环。我认为它会在第一次停止后停止。
function scrambleWord() {
var letterArray = currentWord.split("");
var m = letterArray.length, t, i;
while (m) {
x = Math.floor(Math.random() * m--);
t = letterArray[m];
letterArray[m] = array[i];
array[i] = t;
}
scrambledWord = letterArray.join("");
}
答案 0 :(得分:0)
因为您尚未定义currentWord
或array
。
从浏览器的开发者控制台开始进行故障排除。
答案 1 :(得分:0)
array
,i
和currentWord
从未在任何地方定义过:
function shuffleWord(word) {
var array = word.split('');
var m = array.length, t, i;
// While there remain elements to shuffle…
while (m) {
// Pick a remaining element...
i = Math.floor(Math.random() * m--);
// And swap it with the current element.
t = array[m];
array[m] = array[i];
array[i] = t;
}
return array.join('');
}