javascript - JS循环仅在匹配到数组中的最后一个元素时有效

标签 javascript

我无法让循​​环在我的简单 js 登录脚本中工作。当我尝试使用数组中最后一个登录名(user3 和 pass3)以外的任何登录名登录时,它返回 false。

我做错了什么?

===== 我都试过了。

var userLogins = [{user:"user1", password:"pass1"},{user:"user2", password:"pass2"},{user:"user3", password:"pass3"}]
var success = null;
function logon(user, pass) {
    userok = false;
    for (i = 0; i < userLogins.length; i++)
    { 
        if(pass == userLogins[i].password && user == userLogins[i].user )
        {
            success = true;
        }
        else
        {
            success = false;
        }
    }
    secret(success);
}

function getData() {
    var user = document.getElementById("userid").value;
    var password = document.getElementById("password").value;
    logon(user, password);
}

function secret(auth){
    if(auth)
    {
        show('success');
        hide('login');
    }
    else
    {
        show('error');
        hide('login');
    }
}

function show(show) {
    document.getElementById(show).className = "show";
}
function hide(hide) {
    document.getElementById(hide).className = "hide";
}

最佳答案

for (i = 0; i < userLogins.length; i++)
{ 
    if(pass == userLogins[i].password && user == userLogins[i].user )
    {
        success = true;
    }
    else
    {
        success = false;
    }
}

你需要一个 break ,否则 successtrue 值会被 覆盖>false 在下一次迭代中...除了最后可能的凭据,没有“下一次”迭代。

完成后,您实际上根本不需要 else 分支:

var success = false;
for (i = 0; i < userLogins.length; i++) { 
    if (pass == userLogins[i].password && user == userLogins[i].user) {
        success = true;
        break;
    }
}

关于javascript - JS循环仅在匹配到数组中的最后一个元素时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14617665/

相关文章:

javascript - 使用 wkhtmltopdf 在 PDF 中嵌入 JavaScript

javascript - Redux 和 React-router 正确设置

javascript - 如何递归连接两个嵌套的可观察量

javascript - 为什么这个 puppeteer 的异步函数语法?

javascript - 获取数组作为 ScriptEngine.eval() 的结果

javascript - 移动响应表单不起作用

javascript - jquery 平滑滚动到 anchor ?

javascript - 加载多个 jQuery 版本

javascript - Javascript的内部实现

javascript - NativeScript 识别页面是否完全呈现