Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 实施Fisher–;耶茨洗牌循环不工作_Javascript - Fatal编程技术网

Javascript 实施Fisher–;耶茨洗牌循环不工作

Javascript 实施Fisher–;耶茨洗牌循环不工作,javascript,Javascript,我正在尝试实现,但当我仅使用警报测试下面的代码时,它似乎没有循环。我想第一次之后就停止了 function scrambleWord() { var letterArray = currentWord.split(""); var m = letterArray.length, t, i; while (m) { x = Math.floor(Math.random() * m--); t = letterArray[m];

我正在尝试实现,但当我仅使用警报测试下面的代码时,它似乎没有循环。我想第一次之后就停止了

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

因为您尚未定义
currentWord
array


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

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

currentWord已定义,但不在此函数内部,而是在其外部。对不起,我没说清楚。我在这里被定义为“var m=letterArray.length,t,i;”数组不是以文字的方式创建的吗?@user2316675:
i
被定义了,但它在任何地方都没有给定值。你所说的“创建文字方式”是什么意思?来自w3schools:literal:var myCars=[“萨博”、“沃尔沃”、“宝马”];但在上面的代码中,它由字符串中的字母填充currentWord@user2316675:但是
array
是在哪里定义的呢?哦,该死的。我是最好的。谢谢,应该是字母数组。。。我花了很长时间才发现=(非常感谢你对我的耐心!