我试图比较两个整数的javascript数组,直到一个数组的长度。这意味着,我有一个使用用户输入和用户试图达到的目标数组构建的数组,我只想确保用户输入正确的序列直到用户输入的点。
e.g。
如果目标数组是[0,3,5,4]并且用户输入[0,3,5]到目前为止我希望我的方法返回true。我这样做的尝试是:
function compareArrays(){
for(var i=0; i<playerPattern.length; i++){
if (playerPattern[i] !== pattern[i]){
return false;
} else {
return true;
}
}
}
每次事件处理程序选择用户输入时都会调用它:
if(isInButton(greenButton, mouseX, mouseY)){
playerPattern[playerPattern.length] = 0;
console.log(pattern);
console.log(playerPattern);
console.log(compareArrays());
if(compareArrays() === false){
youLose();
} else if(compareArrays() === true && playerPattern.length === pattern.length){
clickTile(0);
score++;
playerPattern.length = 0; //reset the playerPattern array because they completed the turn
setTimeout(increasePattern, 1000);
} else {
clickTile(0);
}
} else if(isInButton(redButton, mouseX, mouseY)){
...
...
只要用户数组中的第一个元素为真,我就不明白为什么这个方法会返回true。
e.g。在目标的情况下,该方法返回true:[0,3,4,5]和用户[0,2,1,0]
答案 0 :(得分:2)
鉴于return
的两个分支都有if
个语句,在比较第一个元素后,您的函数会立即停止。
return true
语句应该在外面循环:
function compareArrays(){
for(var i=0; i<playerPattern.length; i++){
if (playerPattern[i] !== pattern[i]){
return false;
}
}
return true;
}