【问题标题】:Trouble with "function" to verify data验证数据的“功能”出现问题
【发布时间】:2021-02-11 02:17:57
【问题描述】:

它应该返回带有任何数据库(用户名 + 密码)的 newsFeed 数组,但它只适用于第一个用户,即使其他用户是正确的。

我将提供 CodePen 的链接。谢谢大家

https://codepen.io/kennedyrmenezes/pen/OJbRKay

var database = [
    {
        username: "andrei",
        password: "supersecret"
    },
    {
        username: "sally",
        password: "123"
    },
    {
        username: "ingrid",
        password: "777"
    }   
];

var newsFeed = [
    {
        username: "Bobby",
        timeline: "So tired from all that learning"
    },
    {
        username: "Sally",
        timeline: "JavaScript is sooooooo cool!"
    },
    {
        username: "Mitch",
        timeline: "JavaScript is pretty cool"
    }
];


function isUserValid(username, password) {
    for (var i=0; i < database.length; i++) {
        if(database[i].username === username && 
           database[i].password === password ) {
        return true; 
        }
    return false;
    }   
}



function signIn(username, password) { 

    if (isUserValid(username, password)) {
        console.log(newsFeed);
    } else {
        alert("Sorry, wrong username and password!");
    }
} 

var userNamePrompt = prompt("What's your username?");
var passwordPrompt = prompt("What's your password?");

signIn(userNamePrompt, passwordPrompt);

【问题讨论】:

    标签: javascript arrays prompt


    【解决方案1】:

    这是因为您在 for 循环内部而不是外部返回 false。如果 i = 0 迭代失败,那么您将返回 false。相反,您只想在所有迭代都失败时返回 false。

    function isUserValid(username, password) {
        for (var i=0; i < database.length; i++) {
            if(database[i].username === username && 
               database[i].password === password ) {
            return true; 
            }
        }
        return false;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-02-26
      • 2020-07-29
      • 1970-01-01
      • 2018-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 2021-11-19
      相关资源
      最近更新 更多