我创建了一个数组和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 ??
答案 0 :(得分:2)
您拥有的一种选择是使用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"));
答案 1 :(得分:0)
请勿使用forEach()
,而应使用some()
。
您还必须将循环放入checkDatabase2()
函数内部,而不是在循环中调用它。
function checkDatabase2(username, password) {
return database.some(user => user.username == username && user.password = password);
}
答案 2 :(得分:0)
请勿使用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;
}
答案 3 :(得分:0)
您可以像下面这样使用find
代替forEach
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!"
}
];
function checkDatabase2(username, password) {
return database.find(
item => item.username === username && item.password === password
);
}
function signIn(username,password) {
if (checkDatabase2(username,password)){
console.log(newsFeed);
}else{
alert("Opps! Worng Password!");
}
}
var usernamePrompt = prompt("What\'s your username?");
var passwordPrompt = prompt("What\'s your password?");
signIn(usernamePrompt, passwordPrompt);
答案 4 :(得分:0)
我认为forEach()并不是执行此操作的最佳方法,您可以尝试filter()
,也可以尝试some()
,
由于上面有很多some()
的示例,因此无法提供filter()
的示例here