卡堆栈功能不起作用

时间:2016-11-03 14:32:13

标签: javascript arrays function

我是JavaScript新手。我不知道为什么我的代码不起作用。我正在创建返回卡堆数量的功能。用户将输入卡堆数量。然后将使用以下规则重新混合卡片堆栈。但结果并没有出现。你能帮忙调试一下这段代码..

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript Functions</h1>

<p id="demo"></p>

<script>
var reposition = [];
function Reverse(userinput){
var array = new Array(userinput);
var trueform = new Array(userinput);

for(var i=0; i<userinput; i++){
   array[i] = i + 1;
   trueform[i] = i + 1;
}

while(! (isEqual(trueform,reposition))){
 for(var ii=0; ii<userinput; ii++){
  reposition[userinput-ii-1] = array[ii];
  if((ii+1) != userinput){
   swap((ii+1));
  }
 }
 for(var iii=0; iii<reposition.length; iii++){
  array[iii] = reposition[iii];
 }
 count +=1;
}
return count;
}

function swap(n){
 var temp = array[n];
 for(var iiii=n; iiii<array.length-1; iiii++){
  array[iiii] = array[iiii+1];
 }
 array[array.length-1]= temp; 
}

function isEqual(t, r){
  for(var iiiii=0; iiiii<t.length; iiiii++){
   if(t[iiiii] != r[iiiii]){
    return false;
   }
  }
  return true;
}
document.getElementById("demo").innerHTML = Reverse(4);
</script>

</body>
</html>

2 个答案:

答案 0 :(得分:1)

我注意到的第一件事是没有定义变量数组。这是因为您尝试在单独的函数中使用它。

this.array instead of var array

我注意到的第二件事是在你的while循环中你正在计数+ = 1,这也没有在你的代码中的任何地方定义。

答案 1 :(得分:1)

我建议从某种调试器开始,这样你甚至可以找出你得到的错误。如果您正在使用Chrome,则可以使用F12打开他们的DevTools。 IE和Firefox都有他们自己的开发工具,我认为他们都使用F12作为他们的热键。

这是指向Chrome DevTools

的说明的链接

否则,@ DavidR2016对于您在交换和反向函数中在运行时未声明的某些变量是正确的。由于粘贴在问题中,因此读取代码有点困难,但是当我复制到NotePad ++时,我能够更好地格式化和阅读它。您也不需要增加for循环中的i的数量。你只能使用一个i,因为它们的范围是特定的循环,这也有助于提高可读性。