实现Fisher-Yates shuffle循环不起作用

时间:2013-04-24 19:07:40

标签: javascript

我正在尝试实现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("");
}

2 个答案:

答案 0 :(得分:0)

因为您尚未定义currentWordarray

从浏览器的开发者控制台开始进行故障排除。

答案 1 :(得分:0)

arrayicurrentWord从未在任何地方定义过:

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('');
}