只要第一个元素相等,Javascript数组返回相等

时间:2015-10-28 09:44:48

标签: javascript arrays comparison

我试图比较两个整数的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]

1 个答案:

答案 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;
}