有一个数组,我创建了var:
var database = [
{
username:"candy",
password:"666"
},
{
username: "abby",
password: "123"
},
{
username: "bob",
password: "777"
}
];
var newsFeed = [
{
username: "Bob",
timeline: "So tired from all that learning!"
},
{
username: "Midori",
timeline: "Javascript is sooooo cool!"
},
{
username: "Abby",
timeline: "Javascript is preeetyy cool!"
}
]
var usernamePrompt = prompt("What\'s your username?");
var passwordPrompt = prompt("What\'s your password?");我想使用forEach来遍历var database中的所有数组值,然后检查它们是true还是false,这里是代码的其余部分:
database.forEach(checkDatabase2);//using forEach
function checkDatabase2(username,password) {
if (username === database.username && password === database.password){
return true;
}
return false;最后,要检查是否为真,请打印newsFeed,它将发出警告,下面是我所做的工作:
function signIn(username,password) {
if (checkDatabase2(username,password)===true){
console.log(newsFeed);
}else{
alert("Opps! Worng Password!");
}
}
signIn(usernamePrompt,passwordPrompt);但是当我输入值时--不管我放什么--总是涉及到alert("Opps! Worng Password!"); --当我从database =[]中输入正确的值时,它将返回true??
发布于 2019-07-18 03:31:20
一个选项是使用some检查数组元素中是否至少有一个元素是用户名和密码。
var database = [{"username":"candy","password":"666"},{"username":"abby","password":"123"},{"username":"bob","password":"777"}];
function checkDatabase2(username, password) {
return database.some(o => o.username == username && o.password == password);
}
console.log(checkDatabase2("bob", "777"));
console.log(checkDatabase2("bob", "NOT777"));
发布于 2019-07-18 03:51:59
不要使用forEach,使用some。
function validate (username, password) {
return database.some(function(item) {
return (item.username === username && item.password === password);
});
}
function checkDatabase2 (username, password) {
if (validate(username, password)) {
return true;
}
return false;
}
发布于 2019-07-18 03:31:01
不要使用forEach(),使用some()。
您还必须将循环放在checkDatabase2()函数中,而不是在循环中调用它。
function checkDatabase2(username, password) {
return database.some(user => user.username == username && user.password = password);
}https://stackoverflow.com/questions/57086682
复制相似问题